From eaf85b386cf8103755a529b33d8dcc24eeff8f73 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期日, 16 三月 2025 12:58:57 +0800 Subject: [PATCH] 监管平台 --- ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java | 40 +++ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java | 235 +++++++++++++++++++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java | 234 ++++++++++++++---- ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingGun.java | 31 ++ ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/SuperviseQueryOperatorInfoResultPage.java | 36 +++ ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java | 57 ++++ ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java | 14 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java | 4 ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java | 14 + ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java | 11 10 files changed, 602 insertions(+), 74 deletions(-) diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java index 0c380e4..a6e396f 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/Site.java @@ -5,10 +5,12 @@ import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; import com.ruoyi.common.core.web.domain.BasePojo; import io.swagger.annotations.ApiModelProperty; import lombok.Data; +import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; @@ -47,7 +49,7 @@ * 站点类型(0=其他,1=公共,2=个人,3=公交(专业),4=环卫(专用),5=物流(专用),6=出租车(专用)) */ @TableField("site_type") - @ApiModelProperty(value = "站点类型(0=其他,1=公共,2=个人,3=公交(专业),4=环卫(专用),5=物流(专用),6=出租车(专用))", required = true) + @ApiModelProperty(value = "站点类型(0=其他,1=公共,2=个人,3=公交(专业),4=环卫(专用),5=物流(专用),6=出租车(专用),7=分时租赁(专用),8=小区共享(专用),9=单位(专用),10=私人共享桩(专用))", required = true) private Integer siteType; /** * 经营类型(1=直营,2=非直营) @@ -65,7 +67,7 @@ * 建设场所(0=其他,1=居民区,2=公共机构,3=企事业单位,4=写字楼,5=工业园区,6=交通枢纽,7=大型文体设施,8=城市绿地,9=大型建筑配建停车场,10=路边停车位,11=城际高速服务区) */ @TableField("construction_site") - @ApiModelProperty(value = "建设场所(0=其他,1=居民区,2=公共机构,3=企事业单位,4=写字楼,5=工业园区,6=交通枢纽,7=大型文体设施,8=城市绿地,9=大型建筑配建停车场,10=路边停车位,11=城际高速服务区)", required = true) + @ApiModelProperty(value = "建设场所(0=其他,1=居民区,2=公共机构,3=企事业单位,4=写字楼,5=工业园区,6=交通枢纽,7=大型文体设施,8=城市绿地,9=大型建筑配建停车场,10=路边停车位,11=城际高速服务区),12=风景区,13=公交场站,14=加油加气站,15=出租车", required = true) private Integer constructionSite; /** * 站点环境图 @@ -155,7 +157,7 @@ * 开始服务时间 */ @TableField("start_service_time") - @ApiModelProperty(value = "开始服务时间") + @ApiModelProperty(value = "2.0修改字段-运营时间,{\"1\":[\"09:00-17:30\",\"19:30-22:00\"],\"2\":[\"09:00-17:30\",\"19:30-22:00\"],\"3\":[\"09:00-17:30,\"19:30-2:00\"],\"4\":[\"09:00-17:30\"],5\":[\"09:00-17:30\"],\"6\":[\"09:00-17:30\"],\"7\":[\"09:00-17:30\"]}") private String startServiceTime; /** * 结束服务时间 @@ -223,5 +225,230 @@ */ @TableField("mark") private Integer mark; - + /** + * 充换电站所在县以下行政区划代码 + */ + @TableField("area_code_countryside") + @ApiModelProperty(value = "2.0修改字段-充换电站所在县以下行政区划代码") + private String areaCodeCountryside; + /** + * 站点分类 + */ + @TableField("station_classification") + @ApiModelProperty(value = "2.0修改字段-站点分类1=充电站 2=换电站 3=充换电一体站") + private Integer stationClassification; + /** + * 通用类型 + */ + @TableField("general_application_type") + @ApiModelProperty(value = "2.0修改字段-1:通用类型(可为3种及3种以上的换电车型进行换电的换电站)2:非通用 注:站点分类为2或3时,此字段为必填项;站点分类为1时,此字段为非必填项") + private Integer generalApplicationType; + /** + * 服务车型描述 + */ + @TableField("swap_match_cars") + @ApiModelProperty(value = "2.0修改字段-描述换电站可服务的车系车型(厂牌型号)。注:站点分类为2或3时,此字段为必填项;站点分类为1时,此字段为非必填项逗号拼接") + private String swapMatchCars; + /** + * 7*24小时营业 + */ + @TableField("round_the_clock") + @ApiModelProperty(value = "2.0修改字段-7*24小时营业,0:否 1:是") + private Integer roundTheClock; + /** + * 停车费类型 + */ + @TableField("park_type") + @ApiModelProperty(value = "2.0修改字段-停车费类型,0=免费 1=不免费 2=限时免费停车 3=充电限时减免 4=参考场地实际收费标准") + private Integer parkType; + /** + * 停车费描述 示例 + * {"rules": { + * "00:00:00- + * 00:30:00":"0.4901", + * "00:30:00- + * 06:00:00":"0.3602", + * "06:00:00- + * 08:30:00":"0.0000", + * ......, + * "23:30:00- + * 24:00:00":"0.5603" + * }, + * "freeDuration": 120} + */ + @TableField("park_fee") + @ApiModelProperty(value = "2.0修改字段-停车费描述,示例:\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\"") + private String parkFee; + /** + * 停车费免费时长 单位分钟 + */ + @TableField("park_fee_free") + @ApiModelProperty(value = "2.0修改字段-停车费免费时长 单位分钟") + private Integer parkFeeFree; + /** + * 停车费类型 + */ + @TableField("business_expand_type") + @ApiModelProperty(value = "2.0修改字段-报装类型,是否独立报装:0:否1:是") + private Integer businessExpandType; + /** + * 电费类型 + */ + @TableField("electricity_type") + @ApiModelProperty(value = "2.0修改字段-电费类型,1:商业用电2:普通工业用电3:大工业用电0:其他用电") + private Integer electricityType; + /** + * 报装电源容量 + */ + @TableField("capacity") + @ApiModelProperty(value = "2.0修改字段-报装电源容量:若是独立报装站点,填写“报装电源容量”") + private BigDecimal capacity; + /** + * 站点额定总 + * 功率 + */ + @TableField("rated_power") + @ApiModelProperty(value = "2.0修改字段-站点额定总功率") + private BigDecimal ratedPower; + /** + *峰谷分时 + */ + @TableField("period_fee") + @ApiModelProperty(value = "2.0修改字段-峰谷分时 0否1是") + private Integer periodFee; + /** + *正式投运时间 + */ + @TableField("official_runTime") + @ApiModelProperty(value = "2.0修改字段-正式投运时间 格式yyyy-MM-dd") + private String officialRunTime; + /** + *充换电站方位 + */ + @TableField("station_orientation") + @ApiModelProperty(value = "2.0修改字段-充换电站方位 1:地面-停车场2:地面-路侧3:地下停车4:立体式停车楼") + private Integer stationOrientation; + /** + *充换电站方位 + */ + @TableField("station_area") + @ApiModelProperty(value = "2.0修改字段-充换电站方位 充换电站建设面积") + private BigDecimal stationArea; + /** + *充换电站人 + * 工值守 + */ + @TableField("have_person") + @ApiModelProperty(value = "2.0修改字段-充换电站人工值守 0:无1:有") + private Integer havePerson; + /** + 视频监控配 + 套情况 + */ + @TableField("video_monitor") + @ApiModelProperty(value = "2.0修改字段-视频监控配套情况 0:无1:有") + private Integer videoMonitor; + /** + 视频监控配 + 套情况 + */ + @TableField("supporting_facilities") + @ApiModelProperty(value = "2.0修改字段-周边配套设施 1:卫生间2:便利店3:餐厅4:休息室5:雨棚,多个逗号拼接") + private String supportingFacilities; + /** + 视频监控配 + 套情况 + */ + @TableField("printer_flag") + @ApiModelProperty(value = "2.0修改字段-是否有小票机 0:无1:有") + private Integer printerFlag; + /** + 是否有道闸 + */ + @TableField("barrier_flag") + @ApiModelProperty(value = "2.0修改字段-是否有道闸0:无1:有") + private Integer barrierFlag; + /** + 是否有地锁 + */ + @TableField("parking_lock_flag") + @ApiModelProperty(value = "2.0修改字段-是否有地锁0:1:有") + private Integer parkingLockFlag; + // todo 换电设备信息 + //SwapEquipmentInfos + //换电设备信息对象数组,参照 + //公共对象:换电设备信息 + //站点分 + //类为2 + //或3时 + //必填 + //SupSwa + //pEquip + //mentIn + //fo数组 + /** + * 充电电费描 + * 述 + */ + @TableField("electricity_fee") + @ApiModelProperty(value = "2.0修改字段-充电电费描述,示例:\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\"") + private String electricityFee; + /** + * 设备所属方名称 + */ + @TableField("equipment_owner_name") + @ApiModelProperty(value = "2.0修改字段-设备运营商全称") + private String equipmentOwnerName; + /** + * 供电类型 + */ + @TableField("supply_type") + @ApiModelProperty(value = "2.0修改字段-供电类型,1:直供电2:转供电") + private Integer supplyType; + /** + * 供电局用户编号 + */ + @TableField("resident_no") + @ApiModelProperty(value = "2.0修改字段-供电局用户编号,直供电必填") + private String residentNo; + /** + * 表号 + */ + @TableField("watt_hour_meter_no") + @ApiModelProperty(value = "2.0修改字段-表号") + private String wattHourMeterNo; + /** + * 外电功率 + */ + @TableField("forward_power") + @ApiModelProperty(value = "2.0修改字段-外电功率") + private BigDecimal forwardPower; + /** + * 服务费描述 + */ + @TableField("service_fee") + @ApiModelProperty(value = "2.0修改字段-服务费描述,示例:\"00:00:00-00:30:00\":\"0.4901\",\"00:00:30-01:00:00\":\"0.1234\"") + private String serviceFee; + /** + * 服务费描述 + */ + @TableField("record_unique_no") + @ApiModelProperty(value = "2.0修改字段-充电站全省唯一备案号") + private String recordUniqueNo; +// /** +// * 换电设备信息 +// */ +// @TableField("swap_equipment_infos") +// @ApiModelProperty(value = "2.0修改字段-换电设备信息 站点分类为2或3时必填 示例:" + +// "[{" + +// "\"SwapMechanicalEquipmentID\": \"A564778B\"," + +// "\"MechanicalEquipmentPower\": 128.0000" + +// "}," + +// "{" + +// "\"SwapMechanicalEquipmentID\": \"A564778C\"," + +// "\"MechanicalEquipmentPower\": 150.0000" + +// "}" + +// "]") +// private String swapEquipmentInfos; + } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingGun.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingGun.java index b6f5cbc..acfc5b1 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingGun.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingGun.java @@ -103,7 +103,9 @@ @TableField("parking_lock_state") private Integer parkingLockState; - @ApiModelProperty(value = "国家标准", required = true) + @ApiModelProperty(value = "国家标准 1:2011\n" + + "2:2015\n" + + "3:兼容2011和2015", required = true) @TableField("national_standard") private String nationalStandard; @@ -118,5 +120,32 @@ @ApiModelProperty(value = "完整编号(桩号+抢号)") @TableField("fullNumber") private String fullNumber; + @ApiModelProperty(value = "2.0修改字段 设备接口分类 1:车辆充电设备接口\n" + + "2:换电站内的电池箱充电设备\n" + + "接口" , required = true) + @TableField("equipment_classification") + private Integer equipmentClassification; + @ApiModelProperty(value = "2.0修改字段-恒功率电压上限", required = false) + @TableField("constant_voltage_upper_limits") + private BigDecimal constantVoltageUpperLimits; + @ApiModelProperty(value = "2.0修改字段-恒功率电压下限", required = false) + @TableField("constant_voltage_lower_limits") + private BigDecimal constantVoltageLowerLimits; + + @ApiModelProperty(value = "2.0修改字段-恒功率电流上限", required = false) + @TableField("constant_current_upper_limits") + private BigDecimal constantCurrentUpperLimits; + @ApiModelProperty(value = "2.0修改字段-恒功率电流下限", required = false) + @TableField("constant_current_lower_limits") + private BigDecimal constantCurrentLowerLimits; + @ApiModelProperty(value = "2.0修改字段-辅助电源 1:12V2:24V3:兼容12V和24V",required = true) + @TableField("aux_power") + private Integer auxPower; + @ApiModelProperty(value = "2.0修改字段-运营状态0:未知1:建设中5:关闭下线6:维护中50:正常使用",required = true) + @TableField("opreate_status") + private Integer opreateStatus; + @ApiModelProperty(value = "2.0修改字段-运营时间描述") + @TableField("opreate_hours") + private String opreateHours; } diff --git a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java index fe22081..f57b585 100644 --- a/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java +++ b/ruoyi-api/ruoyi-api-chargingPile/src/main/java/com/ruoyi/chargingPile/api/model/TChargingPile.java @@ -48,7 +48,7 @@ @TableField("number") private Integer number; - @ApiModelProperty(value = "设备类型(0=其他,1=直流设备,2=交流设备,3=交直流一体设备,4=无线设备)", required = true) + @ApiModelProperty(value = "设备类型(0=其他,1=直流设备,2=交流设备,3=交直流一体设备,4=无线设备 5=有序 6=V2G)", required = true) @TableField("type") private Integer type; @@ -100,4 +100,16 @@ @ApiModelProperty(value = "iotd设备id") @TableField("iotd_device_id") private String iotdDeviceId; + @ApiModelProperty(value = "设备分类 1:车辆充电设备2:换电站内的电池箱充电设备") + @TableField("equipment_classification") + private Integer equipmentClassification; + @ApiModelProperty(value = "设备唯一编码") + @TableField("equipment_unique_number") + private String equipmentUniqueNumber; + @ApiModelProperty(value = "充电设备经度") + @TableField("equipment_lng") + private String equipmentLng; + @ApiModelProperty(value = "充电设备纬度") + @TableField("equipment_lat") + private String equipmentLat; } diff --git a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java index d46361c..7d58d32 100644 --- a/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java +++ b/ruoyi-service/ruoyi-chargingPile/src/main/java/com/ruoyi/chargingPile/service/impl/SiteServiceImpl.java @@ -196,6 +196,7 @@ } site.setMark(0); this.save(site); + // 推送充电站数据给监管平台 return AjaxResult.success(); } @@ -267,9 +268,9 @@ // if(StringUtils.isEmpty(site.getLon()) || StringUtils.isEmpty(site.getLat())){ // return AjaxResult.error("地图位置不能为空"); // } - if(StringUtils.isEmpty(site.getPhone())){ - return AjaxResult.error("站点电话不能为空"); - } +// if(StringUtils.isEmpty(site.getPhone())){ +// return AjaxResult.error("站点电话不能为空"); +// } if(StringUtils.isEmpty(site.getServicePhone())){ return AjaxResult.error("服务电话不能为空"); } @@ -279,6 +280,56 @@ if(null == site.getSort()){ return AjaxResult.error("排序不能为空"); } + if(StringUtils.isEmpty(site.getAreaCodeCountryside())){ + return AjaxResult.error("充换电站所在县以下行政区划代码不能为空"); + } + if(null == site.getStationClassification()){ + return AjaxResult.error("请选择站点分类"); + } + if(null == site.getGeneralApplicationType()){ + return AjaxResult.error("请选择通用类型"); + } + if(null == site.getParkType()){ + return AjaxResult.error("请选择停车费类型"); + } + if(null == site.getRoundTheClock()){ + return AjaxResult.error("请选择是否7*24h营业"); + } + if (site.getStationClassification()!=1&& (!org.springframework.util.StringUtils.hasLength(site.getSwapMatchCars()))){ + return AjaxResult.error("服务车型描述不能为空"); + } + if(null == site.getElectricityType()){ + return AjaxResult.error("请选择电费类型"); + } + if(null == site.getBusinessExpandType()){ + return AjaxResult.error("请选择报装类型"); + } + if(null == site.getCapacity()){ + return AjaxResult.error("报装电源容量不能为空"); + } + if(null == site.getRatedPower()){ + return AjaxResult.error("站点额定总功率不能为空"); + } + if(StringUtils.isEmpty(site.getOfficialRunTime())){ + return AjaxResult.error("请选择正式投运时间"); + } + if(null == site.getPeriodFee()){ + return AjaxResult.error("请选择峰谷时分"); + } + if(null == site.getVideoMonitor()){ + return AjaxResult.error("请选择视频监控配套情况"); + } + if(StringUtils.isEmpty(site.getEquipmentOwnerName())){ + return AjaxResult.error("设备所属方名称不能为空"); + } + if(null == site.getSupplyType()){ + return AjaxResult.error("请选择供电类型"); + } + if(site.getSupplyType()==1){ + if (StringUtils.isEmpty(site.getResidentNo())){ + return AjaxResult.error("供电局用户编号不能为空"); + } + } return AjaxResult.success(); } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java index 5484a0c..5f4ca19 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/TCECController.java @@ -276,6 +276,45 @@ List<StationInfo> StationInfos = new ArrayList<>(); for (Site datum : sites) { StationInfo stationInfo = new StationInfo(); + stationInfo.setAreaCodeCountryside(datum.getAreaCodeCountryside()); + stationInfo.setStationClassification(datum.getStationClassification()); + stationInfo.setGeneralApplicationType(datum.getGeneralApplicationType()); + if (org.springframework.util.StringUtils.hasLength(datum.getSwapMatchCars())){ + stationInfo.setSwapMatchCars(Arrays.asList(datum.getSwapMatchCars().split(","))); + } + stationInfo.setBusineHours(datum.getStartServiceTime()); + stationInfo.setRoundTheClock(datum.getRoundTheClock()); + stationInfo.setParkType(datum.getParkType()); + stationInfo.setElectricityFee("{"+datum.getElectricityFee()+"}"); + stationInfo.setServiceFee("{"+datum.getServiceFee()+"}"); + stationInfo.setParkFee("{\"rules\":"+datum.getParkFee()+","+"\"freeDuration\":"+datum.getParkFeeFree()+"}"); + stationInfo.setElectricityType(datum.getElectricityType()); + stationInfo.setBusinessExpandType(datum.getBusinessExpandType()); + stationInfo.setCapacity(datum.getCapacity()); + stationInfo.setRatedPower(datum.getRatedPower()); + stationInfo.setPeriodFee(datum.getPeriodFee()); + stationInfo.setOfficialRunTime(datum.getOfficialRunTime()); + stationInfo.setStationOrientation(datum.getStationOrientation()); + stationInfo.setStationArea(datum.getStationArea()); + stationInfo.setHavePerson(datum.getHavePerson()); + stationInfo.setVideoMonitor(datum.getVideoMonitor()); + if (StringUtils.isNotEmpty(datum.getSupportingFacilities())){ + String[] split = datum.getSupportingFacilities().split(","); + List<Integer> collect = Arrays.stream(split).map(Integer::parseInt).collect(Collectors.toList()); + stationInfo.setSupportingFacilities(collect); + } + stationInfo.setPrinterFlag(datum.getPrinterFlag()); + stationInfo.setBarrierFlag(datum.getBarrierFlag()); + stationInfo.setParkingLockFlag(datum.getParkingLockFlag()); + stationInfo.setEquipmentOwnerName(datum.getEquipmentOwnerName()); + stationInfo.setResidentNo(datum.getResidentNo()); + stationInfo.setSupplyType(datum.getSupplyType()); + stationInfo.setWattHourMeterNo(datum.getWattHourMeterNo()); + BigDecimal forwardPower = datum.getForwardPower(); + if (forwardPower!=null){ + stationInfo.setForwardPower(forwardPower.setScale(4, BigDecimal.ROUND_HALF_UP).toString()); + } + stationInfo.setRecordUniqueNo(datum.getRecordUniqueNo()); stationInfo.setStationID(datum.getId().toString()); stationInfo.setOperatorID("906171535"); stationInfo.setEquipmentOwnerID("906171535"); @@ -324,7 +363,7 @@ stationInfo.setPictures(StringUtils.isNotEmpty(datum.getImgUrl()) ? Arrays.asList(datum.getImgUrl().split(",")) : new ArrayList<>()); stationInfo.setSiteGuide(datum.getGuide()); stationInfo.setMatchCars(datum.getVehicleDescription()); - stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime()); +// stationInfo.setBusineHours(datum.getStartServiceTime() + "-" + datum.getEndServiceTime()); stationInfo.setElectricityFee(datum.getRateDescription()); //添加停车费信息 Optional<TParkingLot> first = parkingLots.stream().filter(s -> s.getSiteId().equals(datum.getId())).findFirst(); @@ -332,7 +371,6 @@ TParkingLot tParkingLot = first.get(); buildPlaceHolder(tParkingLot, stationInfo); } - //构建充电设备信息数据 stationInfo.setEquipmentInfos(buildEquipmentInfo(datum.getId(), tChargingPiles, chargingGunList)); StationInfos.add(stationInfo); @@ -379,6 +417,8 @@ equipmentInfo.setManufacturerID(tChargingPile.getManufacturerCode()); equipmentInfo.setManufacturerName(tChargingPile.getManufacturer()); equipmentInfo.setEquipmentModel(tChargingPile.getEquipmentType()); + equipmentInfo.setEquipmentUniqueNumber(tChargingPile.getEquipmentUniqueNumber()); + equipmentInfo.setEquipmentClassification(tChargingPile.getEquipmentClassification()); if(null != tChargingPile.getProductionDate()){ equipmentInfo.setProductionDate(tChargingPile.getProductionDate().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"))); } @@ -397,6 +437,12 @@ break; case 4: equipmentInfo.setEquipmentType(EquipmentTypeEnum.WIRELESS_DEVICE.getType()); + break; + case 5: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.ORDER.getType()); + break; + case 6: + equipmentInfo.setEquipmentType(EquipmentTypeEnum.V2G.getType()); break; } @@ -421,6 +467,14 @@ ConnectorInfo connectorInfo = new ConnectorInfo(); connectorInfo.setConnectorID(chargingGun.getFullNumber()); connectorInfo.setConnectorName(chargingGun.getName()); + connectorInfo.setEquipmentClassification(chargingGun.getEquipmentClassification()); + connectorInfo.setConstantVoltageLowerLimits(chargingGun.getConstantVoltageLowerLimits()); + connectorInfo.setConstantVoltageUpperLimits(chargingGun.getConstantVoltageUpperLimits()); + connectorInfo.setConstantCurrentLowerLimits(chargingGun.getConstantCurrentLowerLimits()); + connectorInfo.setConstantCurrentUpperLimits(chargingGun.getConstantCurrentUpperLimits()); + connectorInfo.setAuxPower(chargingGun.getAuxPower()); + connectorInfo.setOpreateStatus(chargingGun.getOpreateStatus()); + connectorInfo.setOpreateHours(chargingGun.getOpreateHours()); switch (chargingGun.getType()){ case 0: connectorInfo.setConnectorType(ConnectorTypeEnum.OTHER.getType()); @@ -441,8 +495,6 @@ 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()); @@ -1637,8 +1689,6 @@ /*********************数据监管平台接口*********************/ - - /** * 查询运营商信息 * @param baseRequest @@ -1671,14 +1721,22 @@ pageSize = 50; } String operatorTel = systemConfigurationClient.getServerPhone().getData(); + SuperviseQueryOperatorInfoResultPage superviseQueryOperatorInfoResultPage = new SuperviseQueryOperatorInfoResultPage(); + superviseQueryOperatorInfoResultPage.setPageNo(1); + superviseQueryOperatorInfoResultPage.setPageCount(1); + superviseQueryOperatorInfoResultPage.setItemSize(1); + SuperviseQueryOperatorInfoResult superviseQueryOperatorInfoResult = new SuperviseQueryOperatorInfoResult(); superviseQueryOperatorInfoResult.setOperatorID("906171535"); superviseQueryOperatorInfoResult.setOperatorUSCID("91510903906171535D"); superviseQueryOperatorInfoResult.setOperatorName("四川明星新能源科技有限公司"); superviseQueryOperatorInfoResult.setOperatorTel1(operatorTel); - + List<SuperviseQueryOperatorInfoResult> superviseQueryOperatorInfoResults = new ArrayList<>(); + superviseQueryOperatorInfoResults.add(superviseQueryOperatorInfoResult); + // 将superviseQueryOperatorInfoResults转化为json数组 + superviseQueryOperatorInfoResultPage.setOperatorInfos(superviseQueryOperatorInfoResults); + String jsonString = JacksonUtils.toJson(superviseQueryOperatorInfoResultPage); //参数加密 - String jsonString = JacksonUtils.toJson(superviseQueryOperatorInfoResult); log.info("监管平台查询充电站信息响应Data:" + jsonString); String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); baseResult.setData(encrypt); @@ -1686,57 +1744,117 @@ log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); return baseResult; } + + - - -// /** -// * 查询充电站信息 -// * @param baseRequest -// * @param request -// * @return -// */ -// @PostMapping("/supervise_query_stations_info") -// public BaseResult superviseQueryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ -// log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); -// //校验token和签名 -// BaseResult baseResult = requestCheck(true, baseRequest, request); -// if(0 != baseResult.getRet()){ -// log.info("监管平台查询充电站信息响应Data:"); -// baseResult.setData(""); -// baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); -// log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); -// return baseResult; -// } -// Operator operator = baseResult.getOperator(); -// //解密参数 -// String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); -// log.info("监管平台查询充电站信息请求Data:" + decrypt); -// QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); -// Integer pageNo = queryStationsInfo.getPageNo(); -// Integer pageSize = queryStationsInfo.getPageSize(); -// List<String> stationIDs = queryStationsInfo.getStationIDs(); -// if(null == pageNo){ -// pageNo = 1; -// } -// if(null == pageSize){ -// pageSize = 50; -// } -// PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs); -// List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData(); -// 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()); -// queryStationsInfoResult.setStationInfos(superviseBuildSite(parkingLots, siteListPaging.getRecords())); -// //参数加密 -// String jsonString = JacksonUtils.toJson(queryStationsInfoResult); -// log.info("监管平台查询充电站信息响应Data:" + jsonString); -// String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); -// baseResult.setData(encrypt); -// baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); -// log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); -// return baseResult; -// } + /** + * 查询充电站信息 + * @param baseRequest + * @param request + * @return + */ + @PostMapping("/supervise_query_stations_info") + public BaseResult superviseQueryStationsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ + log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); + //校验token和签名 + BaseResult baseResult = requestCheck(true, baseRequest, request); + if(0 != baseResult.getRet()){ + log.info("监管平台查询充电站信息响应Data:"); + baseResult.setData(""); + baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); + log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + return baseResult; + } + Operator operator = baseResult.getOperator(); + //解密参数 + String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); + log.info("监管平台查询充电站信息请求Data:" + decrypt); + QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); + Integer pageNo = queryStationsInfo.getPageNo(); + Integer pageSize = queryStationsInfo.getPageSize(); + List<String> stationIDs = queryStationsInfo.getStationIDs(); + if(null == pageNo){ + pageNo = 1; + } + if(null == pageSize){ + pageSize = 50; + } + PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs); + List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData(); + 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()); + queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); + //参数加密 + String jsonString = JacksonUtils.toJson(queryStationsInfoResult); + log.info("监管平台查询充电站信息响应Data:" + jsonString); + String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); + baseResult.setData(encrypt); + baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); + log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + return baseResult; + } + /** + * 查询充电站信息 + * @param baseRequest + * @param request + * @return + */ + @PostMapping("/supervise_notification_operation_stats_info") + public BaseResult superviseNotificationOperationStatsInfo(@RequestBody BaseRequest baseRequest, HttpServletRequest request){ + log.info("监管平台查询充电站信息请求参数:" + JacksonUtils.toJson(baseRequest)); + //校验token和签名 + BaseResult baseResult = requestCheck(true, baseRequest, request); + if(0 != baseResult.getRet()){ + log.info("监管平台查询充电站信息响应Data:"); + baseResult.setData(""); + baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); + log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + return baseResult; + } + Operator operator = baseResult.getOperator(); + //解密参数 + String decrypt = AESUtil.decrypt(baseRequest.getData(), operator.getOurDataSecret(), operator.getOurDataSecretIv()); + log.info("监管平台查询充电站信息请求Data:" + decrypt); + QueryStationsInfo queryStationsInfo = JSON.parseObject(decrypt, QueryStationsInfo.class); + Integer pageNo = queryStationsInfo.getPageNo(); + Integer pageSize = queryStationsInfo.getPageSize(); + List<String> stationIDs = queryStationsInfo.getStationIDs(); + if(null == pageNo){ + pageNo = 1; + } + if(null == pageSize){ + pageSize = 50; + } + PageInfo<Site> siteListPaging = siteClient.getSiteListPaging(pageNo, pageSize, stationIDs); + List<TParkingLot> parkingLots = parkingLotClient.getAllParkingLot().getData(); + 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()); + queryStationsInfoResult.setStationInfos(buildSite(parkingLots, siteListPaging.getRecords())); + //参数加密 + String jsonString = JacksonUtils.toJson(queryStationsInfoResult); + log.info("监管平台查询充电站信息响应Data:" + jsonString); + String encrypt = AESUtil.encrypt(jsonString, operator.getOurDataSecret(), operator.getOurDataSecretIv()); + baseResult.setData(encrypt); + baseResult.setSig(TCECUtil.ourBuildSign(baseResult)); + log.info("监管平台查询充电站信息响应参数:" + JacksonUtils.toJson(baseResult)); + return baseResult; + } + + /** + * 推送充换电站信息 + * @param site + * @return + */ + @PostMapping("/supervise_notification_station_info") + public BaseResult superviseNotificationStationInfo(@RequestBody Site site){ + BaseResult baseResult = new BaseResult(); + + return baseResult; + } // // // /** diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java index 0bcc566..0c364ea 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/ConnectorInfo.java @@ -1,6 +1,8 @@ package com.ruoyi.integration.drainage.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -23,9 +25,16 @@ /** * 充电设备接口名称 */ - @Null + @NotNull @JsonProperty("ConnectorName") private String connectorName; + /** + * 1:车辆充电设备接口 + * 2:换电站内的电池箱充电设备接口 + */ + @Null + @JsonProperty("EquipmentClassification") + private Integer equipmentClassification; /** * 充电设备接口类型 */ @@ -37,13 +46,13 @@ */ @NotNull @JsonProperty("VoltageUpperLimits") - private Integer voltageUpperLimits; + private BigDecimal voltageUpperLimits; /** * 额定电压下限 */ @NotNull @JsonProperty("VoltageLowerLimits") - private Integer voltageLowerLimits; + private BigDecimal voltageLowerLimits; /** * 额定电流 */ @@ -66,6 +75,7 @@ * 国家标准 * 1:2011 * 2:2015 + * 3:兼容2011和2015 */ @NotNull @JsonProperty("NationalStandard") @@ -76,4 +86,28 @@ @Null @JsonProperty("QRCode") private String QRCode; + @Null + @JsonProperty("ConstantVoltageUpperLimits") + private BigDecimal constantVoltageUpperLimits; + @Null + @JsonProperty("ConstantVoltageLowerLimits") + private BigDecimal constantVoltageLowerLimits; + + @Null + @JsonProperty("ConstantCurrentUpperLimits") + private BigDecimal constantCurrentUpperLimits; + + @Null + @JsonProperty("ConstantCurrentLowerLimits") + private BigDecimal constantCurrentLowerLimits; + @NotNull + @JsonProperty("AuxPower") + private Integer auxPower; + + @NotNull + @TableField("OpreateStatus") + private Integer opreateStatus; + @Null + @TableField("OpreateHours") + private String opreateHours; } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java index f19eddc..775bf7f 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/EquipmentInfo.java @@ -1,6 +1,7 @@ package com.ruoyi.integration.drainage.model; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.models.auth.In; import lombok.Data; import javax.validation.constraints.NotNull; @@ -27,6 +28,13 @@ @Null @JsonProperty("ManufacturerID") private String manufacturerID; + /** + * 设备唯一 + * 编码 + */ + @Null + @JsonProperty("EquipmentUniqueNumber") + private String equipmentUniqueNumber; /** * 设备生产商名称 */ @@ -82,4 +90,10 @@ @Null @JsonProperty("EquipmentName") private String equipmentName; + /** + * 设备分类 + */ + @NotNull + @JsonProperty("EquipmentClassification") + private Integer equipmentClassification; } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java index b7561b0..7bcb042 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/StationInfo.java @@ -1,6 +1,8 @@ package com.ruoyi.integration.drainage.model; +import com.baomidou.mybatisplus.annotation.TableField; import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotNull; @@ -242,12 +244,12 @@ * 报装电源容量 */ @JsonProperty("Capacity") - private Double capacity; + private BigDecimal capacity; /** * 站点额定总功率 */ @JsonProperty("RatedPower") - private Double ratedPower; + private BigDecimal ratedPower; /** * 峰谷分时 * 0:否 @@ -273,7 +275,7 @@ * 充换电站建设面积 */ @JsonProperty("StationArea") - private Double stationArea; + private BigDecimal stationArea; /** * 充换电站人工值守 * 0:无 @@ -369,4 +371,7 @@ */ @JsonProperty("RecordUniqueNo") private String recordUniqueNo; + + + } diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/SuperviseQueryOperatorInfoResultPage.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/SuperviseQueryOperatorInfoResultPage.java new file mode 100644 index 0000000..6f311bf --- /dev/null +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/SuperviseQueryOperatorInfoResultPage.java @@ -0,0 +1,36 @@ +package com.ruoyi.integration.drainage.model; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.Data; + +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Null; +import java.util.List; + +/** + * @author zhibing.pu + * @Date 2025/2/19 9:39 + */ +@Data +public class SuperviseQueryOperatorInfoResultPage { + /** + * 查询页码 + */ + @JsonProperty("PageNo") + private Integer pageNo; + /** + * 每页数量 + */ + @JsonProperty("PageCount") + private Integer pageCount; + /** + * 每页数量 + */ + @JsonProperty("ItemSize") + private Integer itemSize; + /** + * 数据 + */ + @JsonProperty("OperatorInfos") + private List<SuperviseQueryOperatorInfoResult> operatorInfos; +} diff --git a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java index c5630c6..2ce02cc 100644 --- a/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java +++ b/ruoyi-service/ruoyi-integration/src/main/java/com/ruoyi/integration/drainage/model/enu/EquipmentTypeEnum.java @@ -10,7 +10,9 @@ ALTERNATING_CURRENT(2, "交流设备"), ALTERNATING_DIRECT(3, "交直流一体设备"), WIRELESS_DEVICE(4, "无线设备"), - OTHER(5, "其他") + OTHER(5, "其他"), + ORDER(6, "有序"), + V2G(7, "V2G") ; -- Gitblit v1.7.1