diff --git a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDTO.java b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDTO.java index 5c8febd88..553be587c 100644 --- a/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDTO.java +++ b/pqs-device/common-device-biz/src/main/java/com/njcn/device/biz/pojo/dto/LineDTO.java @@ -35,6 +35,6 @@ public class LineDTO { @ApiModelProperty(name = "objType",value = "对象类型") private String objType; - @ApiModelProperty(name = "stationType",value = "新能源场站类型") - private String stationType; + @ApiModelProperty(name = "新能源场站信息ID") + private String newStationId; } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/DeptLineFeignClient.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/DeptLineFeignClient.java index e9bf94126..a99e17288 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/DeptLineFeignClient.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/DeptLineFeignClient.java @@ -21,7 +21,7 @@ public interface DeptLineFeignClient { HttpResult> getLineByDeptId(@RequestParam("id")String id); @PostMapping("/getLineByDeptIdAndNewStation") - HttpResult> getLineByDeptIdAndNewStation(@RequestParam("id")String id,@RequestParam("type")String type); + HttpResult> getLineByDeptIdAndNewStation(@RequestParam("id")String id); @PostMapping("/selectDeptBindLines") HttpResult selectDeptBindLines(@RequestParam("ids") List ids); diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/DeptLineFeignClientFallbackFactory.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/DeptLineFeignClientFallbackFactory.java index 5bd202030..bd9a5c605 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/DeptLineFeignClientFallbackFactory.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/DeptLineFeignClientFallbackFactory.java @@ -40,7 +40,7 @@ public class DeptLineFeignClientFallbackFactory implements FallbackFactory> getLineByDeptIdAndNewStation(String id, String type) { + public HttpResult> getLineByDeptIdAndNewStation(String id) { log.error("{}异常,降级处理,异常为:{}", "根据部门id获取绑定的监测点且再根据NewStation进行过滤", throwable.toString()); throw new BusinessException(finalExceptionEnum); } diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/NewStationClientFallbackFactory.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/NewStationClientFallbackFactory.java index 1d2f757b0..da1c40b91 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/NewStationClientFallbackFactory.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/api/fallback/NewStationClientFallbackFactory.java @@ -30,7 +30,7 @@ public class NewStationClientFallbackFactory implements FallbackFactory selectById(String id) { - log.error("{}异常,降级处理,异常为:{}", "获取终获取告警策略列表", throwable.toString()); + log.error("{}异常,降级处理,异常为:{}", "根据ID获取新能源场站高低电压穿越表信息", throwable.toString()); throw new BusinessException(finalExceptionEnum); } }; diff --git a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/constant/Param.java b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/constant/Param.java index 0a04a175d..0b108e062 100644 --- a/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/constant/Param.java +++ b/pqs-device/pq-device/pq-device-api/src/main/java/com/njcn/device/pq/constant/Param.java @@ -21,4 +21,14 @@ public interface Param { Integer WEEK = 4; Integer DAY = 5; + //以下四个固定ID用于某些业务判断 + //字典(sys_dict_data):电压暂升的ID + String UPPEREVENT = "c5ce588cb76fba90c4519ab250c962d0"; + //字典(sys_dict_data):电压暂降的ID + String LOWEREVENT = "c37861896dafab0883321e1d508caa51"; + //字典(sys_dict_data):光伏电站的ID + String PHOTOVOLTAICPOWER = "45615057cb88650ffc4779b0629bac7e"; + //字典(sys_dict_data):风电场的ID + String WINDFARM = "f9145acb79cbf136b9ee89fd38d72583"; + } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeptLineController.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeptLineController.java index c37dec7d1..b2898bb6d 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeptLineController.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/controller/DeptLineController.java @@ -115,9 +115,9 @@ public class DeptLineController extends BaseController { @OperateInfo(info = LogEnum.SYSTEM_COMMON) @PostMapping("/getLineByDeptIdAndNewStation") @ApiOperation("根据部门id获取绑定的监测点且再根据NewStation进行过滤") - public HttpResult> getLineByDeptIdAndNewStation(@RequestParam("id") String id,@RequestParam("type")String type) { + public HttpResult> getLineByDeptIdAndNewStation(@RequestParam("id") String id) { String methodDescribe = getMethodDescribe("getLineByDeptIdAndNewStation"); - List list = deptLineService.getLineByDeptIdAndNewStation(id,type); + List list = deptLineService.getLineByDeptIdAndNewStation(id); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeptLineMapper.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeptLineMapper.java index 8a3156746..9d203ae51 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeptLineMapper.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/DeptLineMapper.java @@ -83,5 +83,5 @@ public interface DeptLineMapper extends BaseMapper { List selectSubStationList(@Param("param") SubstationParam substationParam); - List getLineByDeptIdAndNewStation(@Param("id") String id,@Param("stationType") String stationType); + List getLineByDeptIdAndNewStation(@Param("id") String id); } diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml index c75d4f0a2..26cb3fa8e 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/DeptLineMapper.xml @@ -198,6 +198,7 @@ diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml index 2b30cbadf..67d8710dd 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/mapper/mapping/LineMapper.xml @@ -1432,7 +1432,7 @@ pqd.Run_Flag as runFlag, detail.PT_Type AS ptType, detail.PT_Phase_Type AS ptPhaseType, - detail.New_Station_Id AS stationType + detail.New_Station_Id AS newStationId FROM pq_line line, pq_line_detail detail, diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java index 401632dab..70702af75 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/DeptLineService.java @@ -73,7 +73,7 @@ public interface DeptLineService extends IService { * @author guofeihu * @date 2024/8/19 */ - List getLineByDeptIdAndNewStation(String id,String type); + List getLineByDeptIdAndNewStation(String id); /** * @Description: 根据部门id获取所有子集部门所包含的部门信息 diff --git a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java index d837147a7..032fe7cb1 100644 --- a/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java +++ b/pqs-device/pq-device/pq-device-boot/src/main/java/com/njcn/device/pq/service/impl/DeptLineServiceImpl.java @@ -12,7 +12,7 @@ import com.njcn.device.pq.mapper.LineMapper; import com.njcn.device.pq.pojo.po.DeptLine; import com.njcn.device.pq.pojo.vo.LineDeviceStateVO; import com.njcn.device.pq.service.DeptLineService; -import com.njcn.event.pojo.constant.Param; +import com.njcn.device.pq.constant.Param; import com.njcn.user.api.DeptFeignClient; import com.njcn.user.pojo.dto.DeptDTO; import com.njcn.web.pojo.param.DeptLineParam; @@ -90,10 +90,8 @@ public class DeptLineServiceImpl extends ServiceImpl i } @Override - public List getLineByDeptIdAndNewStation(String id, String type) { - if("1".equals(type)) type = Param.WINDFARM; - if("2".equals(type)) type = Param.PHOTOVOLTAICPOWER; - return this.baseMapper.getLineByDeptIdAndNewStation(id,type); + public List getLineByDeptIdAndNewStation(String id) { + return this.baseMapper.getLineByDeptIdAndNewStation(id); } @Override diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/api/EventDetailFeignClient.java b/pqs-event/event-api/src/main/java/com/njcn/event/api/EventDetailFeignClient.java index d866f43e4..a6594ca81 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/api/EventDetailFeignClient.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/api/EventDetailFeignClient.java @@ -7,12 +7,11 @@ import com.njcn.event.pojo.param.EventCountParam; import com.njcn.event.pojo.po.EventDetail; import com.njcn.event.pojo.po.RmpEventDetailPO; import com.njcn.event.pojo.vo.GeneralVO; -import io.swagger.annotations.ApiOperation; import org.springframework.cloud.openfeign.FeignClient; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; - +import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -76,4 +75,10 @@ public interface EventDetailFeignClient { */ @PostMapping("/getEventDetailByEventType") HttpResult> getEventDetailByEventType(@RequestBody EventCountParam param); + + /** + * 根据开始时间及结束时间获取暂态事件信息 + */ + @PostMapping("/getNewEventDetailByTime") + HttpResult> getNewEventDetailByTime(@RequestParam(name = "lastTime",required = false)LocalDateTime lastTime,@RequestParam("currentTime")LocalDateTime currentTime); } diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/api/fallback/EventDetailFeignClientFallbackFactory.java b/pqs-event/event-api/src/main/java/com/njcn/event/api/fallback/EventDetailFeignClientFallbackFactory.java index 1c1131f74..e1734b168 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/api/fallback/EventDetailFeignClientFallbackFactory.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/api/fallback/EventDetailFeignClientFallbackFactory.java @@ -12,7 +12,7 @@ import com.njcn.event.utils.EventlEnumUtil; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; - +import java.time.LocalDateTime; import java.util.List; import java.util.Map; @@ -82,6 +82,11 @@ public class EventDetailFeignClientFallbackFactory implements FallbackFactory> getNewEventDetailByTime(LocalDateTime lastTime, LocalDateTime currentTime) { + log.error("{}异常,降级处理,异常为:{}", "根据开始时间及结束时间获取暂态事件信息", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java index 54b9595ec..32c1fbf21 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/constant/Param.java @@ -27,14 +27,4 @@ public interface Param { String BEGIN =" 00:00:00"; String END =" 23:59:59"; - //以下四个固定ID用于某些业务判断 - //字典(sys_dict_data):电压暂升的ID - String UPPEREVENT = "c5ce588cb76fba90c4519ab250c962d0"; - //字典(sys_dict_data):电升暂升的ID - String LOWEREVENT = "c37861896dafab0883321e1d508caa51"; - //字典(sys_dict_data):光伏电站的ID - String PHOTOVOLTAICPOWER = "45615057cb88650ffc4779b0629bac7e"; - //字典(sys_dict_data):风电场的ID - String WINDFARM = "f9145acb79cbf136b9ee89fd38d72583"; - } diff --git a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/EventNewStationVo.java b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/EventNewStationVo.java index 560c39ca1..c10c4d9a4 100644 --- a/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/EventNewStationVo.java +++ b/pqs-event/event-api/src/main/java/com/njcn/event/pojo/vo/EventNewStationVo.java @@ -36,4 +36,7 @@ public class EventNewStationVo implements Serializable { @ApiModelProperty(value = "暂降严重度") private Double severity; + @ApiModelProperty(value = "波形路径") + private String wavePath; + } diff --git a/pqs-event/event-boot/pom.xml b/pqs-event/event-boot/pom.xml index da4917c0c..1c3ef7d78 100644 --- a/pqs-event/event-boot/pom.xml +++ b/pqs-event/event-boot/pom.xml @@ -78,6 +78,12 @@ harmonic-api ${project.version} + + com.njcn + prepare-api + 1.0.0 + compile + diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/EventDetailController.java b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/EventDetailController.java index 7349536a6..c0e1950c7 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/EventDetailController.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/controller/majornetwork/EventDetailController.java @@ -26,6 +26,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -212,4 +213,22 @@ public class EventDetailController extends BaseController { ); return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, list, methodDescribe); } + + /** + * 根据开始时间及结束时间获取暂态事件信息 + * @return + */ + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/getNewEventDetailByTime") + @ApiOperation("根据开始时间及结束时间获取暂态事件信息") + public HttpResult> getNewEventDetailByTime(@RequestParam(name = "lastTime",required = false) LocalDateTime lastTime, @RequestParam("currentTime")LocalDateTime currentTime) { + String methodDescribe = getMethodDescribe("getNewEventDetailByTime"); + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + lambdaQueryWrapper.le(RmpEventDetailPO::getStartTime,currentTime); + if(lastTime != null){ + lambdaQueryWrapper.gt(RmpEventDetailPO::getStartTime,lastTime); + } + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, eventDetailService.list(lambdaQueryWrapper), methodDescribe); + } + } diff --git a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/VoltageRideThroughEventServiceImpl.java b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/VoltageRideThroughEventServiceImpl.java index 501a3c27a..4fbdc4b8b 100644 --- a/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/VoltageRideThroughEventServiceImpl.java +++ b/pqs-event/event-boot/src/main/java/com/njcn/event/service/majornetwork/Impl/VoltageRideThroughEventServiceImpl.java @@ -1,7 +1,6 @@ package com.njcn.event.service.majornetwork.Impl; import cn.hutool.core.bean.BeanUtil; -import com.njcn.device.biz.commApi.CommLineClient; import com.njcn.device.pq.api.DeptLineFeignClient; import com.njcn.device.pq.api.LineFeignClient; import com.njcn.device.pq.api.NewStationClient; @@ -14,6 +13,8 @@ import com.njcn.event.pojo.vo.EventNewStationVo; import com.njcn.event.pojo.vo.VoltageRideThroughVo; import com.njcn.event.service.majornetwork.EventDetailService; import com.njcn.event.service.majornetwork.VoltageRideThroughEventService; +import com.njcn.prepare.harmonic.api.event.SpThroughFeignClient; +import com.njcn.prepare.harmonic.pojo.param.SpThroughParam; import com.njcn.system.api.AreaFeignClient; import com.njcn.system.pojo.po.Area; import com.njcn.user.api.DeptFeignClient; @@ -25,7 +26,6 @@ import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Random; import java.util.stream.Collectors; /** @@ -46,14 +46,14 @@ public class VoltageRideThroughEventServiceImpl implements VoltageRideThroughEve private final DeptLineFeignClient deptLineFeignClient; - private final CommLineClient commLineClient; - private final LineFeignClient lineFeignClient; private final EventDetailService eventDetailService; private final NewStationClient newStationClient; + private final SpThroughFeignClient spThroughFeignClient; + @Override public List voltageRideThroughView(VoltageRideThroughQueryParam voltageRideThroughQueryParam) { List voltageRideThroughVos = new ArrayList<>(); @@ -70,39 +70,17 @@ public class VoltageRideThroughEventServiceImpl implements VoltageRideThroughEve voltageRideThroughVo.setLat(area.getLat()); voltageRideThroughVo.setLng(area.getLng()); } - voltageRideThroughVo.setHighPressure((int) (Math.random() * 100 + 1)+""); - voltageRideThroughVo.setLowPressure((int) (Math.random() * 100 + 1)+""); - //开始计算每个地区高低压穿越次数 - //获取当前部门下所有的监测点(当然也会根据选择的新能源场站类型进行过滤) - List lineIds = deptLineFeignClient.getLineByDeptIdAndNewStation(deptDTO.getId(),voltageRideThroughQueryParam.getType()).getData(); - for(String lineId : lineIds){ - //监测点绑定的暂降事件 - List eventDetails = eventDetailService.getEventDetailData(lineId,voltageRideThroughQueryParam.getSearchBeginTime()+Param.BEGIN,voltageRideThroughQueryParam.getSearchEndTime()+Param.END); - //取出事件类型为:暂升 - List upperEventDetails = eventDetails.stream().filter(e -> e.getEventType().equals(Param.UPPEREVENT)).collect(Collectors.toList()); - //取出事件类型为:暂降 - List lowerEventDetails = eventDetails.stream().filter(e -> e.getEventType().equals(Param.LOWEREVENT)).collect(Collectors.toList()); - //当前监测点为:风电场 - if("1".equals(voltageRideThroughQueryParam.getType())){ - //计算 风电场 暂升次数 - for(EventDetail eventDetail : upperEventDetails){ - - } - //计算 风电场 暂降次数 - for(EventDetail eventDetail : lowerEventDetails){ - - } - } - //当前监测点为:光伏电站 - if("2".equals(voltageRideThroughQueryParam.getType())){ - //计算 光伏电站 暂升次数 - for(EventDetail eventDetail : upperEventDetails){ - - } - //计算 光伏电站 暂降次数 - for(EventDetail eventDetail : lowerEventDetails){ - - } + //开始计算当前地区高低压穿越次数 + //获取当前部门下所有的已绑定能源站的监测点 + List lineIds = deptLineFeignClient.getLineByDeptIdAndNewStation(deptDTO.getId()).getData(); + if(!lineIds.isEmpty()){ + //根据已绑定能源站的监测点获取关联的暂态事件 + List eventDetails = eventDetailService.getEventDetail(lineIds,voltageRideThroughQueryParam.getSearchBeginTime()+Param.BEGIN,voltageRideThroughQueryParam.getSearchEndTime()+Param.END,null); + List eventIds = eventDetails.stream().map(EventDetail::getEventId).collect(Collectors.toList()); + if(!eventIds.isEmpty()){ + SpThroughParam spThroughParam = new SpThroughParam(eventIds,voltageRideThroughQueryParam.getType()); + //赋值子部门高低电压穿越次数 + BeanUtils.copyProperties(spThroughFeignClient.getDataByEventIds(spThroughParam).getData(),voltageRideThroughVo); } } voltageRideThroughVos.add(voltageRideThroughVo); @@ -114,17 +92,24 @@ public class VoltageRideThroughEventServiceImpl implements VoltageRideThroughEve public List voltageRideThroughEventQueryPage(VoltageRideThroughQueryParam voltageRideThroughQueryParam) { List eventNewStationVos = new ArrayList<>(); List lineIds = new ArrayList<>(); - //获取当前选择的部门下所有的监测点(当然也会根据选择的新能源场站类型进行过滤) - lineIds.addAll(deptLineFeignClient.getLineByDeptIdAndNewStation(voltageRideThroughQueryParam.getAreaId(),voltageRideThroughQueryParam.getType()).getData()); + //获取当前部门下所有的已绑定能源站的监测点 + lineIds.addAll(deptLineFeignClient.getLineByDeptIdAndNewStation(voltageRideThroughQueryParam.getAreaId()).getData()); if(!lineIds.isEmpty()){ //根据监测点获取监测点下所有的事件集合 eventNewStationVos = BeanUtil.copyToList(eventDetailService.getEventDetail(lineIds,voltageRideThroughQueryParam.getSearchBeginTime()+Param.BEGIN,voltageRideThroughQueryParam.getSearchEndTime()+Param.END,null), EventNewStationVo.class); - //特殊处理事件集合中新能源场站名称 - for(EventNewStationVo eventNewStationVo : eventNewStationVos){ - List lineDetailDataVOS = lineFeignClient.getLineDetailList(Arrays.asList(eventNewStationVo.getLineId())).getData(); - if(!lineDetailDataVOS.isEmpty()){ - NewStation newStation = newStationClient.selectById(lineDetailDataVOS.get(0).getNewStationId()).getData(); - eventNewStationVo.setNewStationName(newStation.getName()); + if(!eventNewStationVos.isEmpty()){ + SpThroughParam spThroughParam = new SpThroughParam(eventNewStationVos.stream().map(EventNewStationVo::getEventId).collect(Collectors.toList()),voltageRideThroughQueryParam.getType()); + //eventNewStationVos:事件集合中是包含了所有符合条件的事件,可能有部分事件并没有被高低电压穿越记录定时任务所执行 所以需要过滤下 具体逻辑说请看spThroughFeignClient.formatEventIds + List eventIds = spThroughFeignClient.formatEventIds(spThroughParam).getData(); + //过滤掉不符合的事件(eventIds为有效事件ID) + eventNewStationVos = eventNewStationVos.stream().filter(item->eventIds.contains(item.getEventId())).collect(Collectors.toList()); + //特殊处理事件集合中新能源场站名称 + for(EventNewStationVo eventNewStationVo : eventNewStationVos){ + List lineDetailDataVOS = lineFeignClient.getLineDetailList(Arrays.asList(eventNewStationVo.getLineId())).getData(); + if(!lineDetailDataVOS.isEmpty()){ + NewStation newStation = newStationClient.selectById(lineDetailDataVOS.get(0).getNewStationId()).getData(); + eventNewStationVo.setNewStationName(newStation.getName()); + } } } } diff --git a/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RActivePowerRangeQueryParam.java b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RActivePowerRangeQueryParam.java new file mode 100644 index 000000000..516ec9f3d --- /dev/null +++ b/pqs-harmonic/harmonic-api/src/main/java/com/njcn/harmonic/pojo/param/RActivePowerRangeQueryParam.java @@ -0,0 +1,31 @@ +package com.njcn.harmonic.pojo.param; + +import com.njcn.web.pojo.param.BaseParam; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import javax.validation.constraints.NotBlank; +import java.time.LocalDate; + +/** + * 有功功率趋势实分页查询类 + * @author guofeihu + * @date 2024-08-20 + */ +@Data +public class RActivePowerRangeQueryParam extends BaseParam { + + @Data + public static class RActivePowerRangeEdit{ + @ApiModelProperty("id") + private String id; + + @NotBlank(message = "监测点ID不能为空") + @ApiModelProperty("监测点(*)") + private String lineId; + + @NotBlank(message = "日期不能为空") + @ApiModelProperty("日期(*)") + private LocalDate timeId; + } + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/powerstatistics/PowerStatisticsController.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/powerstatistics/PowerStatisticsController.java new file mode 100644 index 000000000..e293a4766 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/controller/powerstatistics/PowerStatisticsController.java @@ -0,0 +1,25 @@ +package com.njcn.harmonic.controller.powerstatistics; + +import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService; +import io.swagger.annotations.Api; +import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.*; +import com.njcn.web.controller.BaseController; + +/** + * 有功功率趋势统计 前端控制器 + * @author guofeihu + * @since 2024-08-20 + */ +@Slf4j +@RestController +@RequestMapping("/powerStatistics") +@Api(tags = "有功功率趋势") +@AllArgsConstructor +public class PowerStatisticsController extends BaseController { + + private final PowerStatisticsService powerStatisticsService; + +} + diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/PowerStatisticsService.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/PowerStatisticsService.java new file mode 100644 index 000000000..4a80188f1 --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/PowerStatisticsService.java @@ -0,0 +1,10 @@ +package com.njcn.harmonic.service.activepowerrange; + +/** + * 有功功率趋势统计 服务类 + * @author guofeihu + * @since 2024-08-20 + */ +public interface PowerStatisticsService { + +} diff --git a/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java new file mode 100644 index 000000000..50f790b1b --- /dev/null +++ b/pqs-harmonic/harmonic-boot/src/main/java/com/njcn/harmonic/service/activepowerrange/impl/PowerStatisticsServiceImpl.java @@ -0,0 +1,14 @@ +package com.njcn.harmonic.service.activepowerrange.impl; + +import com.njcn.harmonic.service.activepowerrange.PowerStatisticsService; +import org.springframework.stereotype.Service; + +/** + * 有功功率趋势统计 服务实现类 + * @author guofeihu + * @since 2024-08-20 + */ +@Service +public class PowerStatisticsServiceImpl implements PowerStatisticsService { + +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/SpThroughFeignClient.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/SpThroughFeignClient.java index 1d40669dd..2132c44ca 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/SpThroughFeignClient.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/SpThroughFeignClient.java @@ -3,8 +3,13 @@ package com.njcn.prepare.harmonic.api.event; import com.njcn.common.pojo.constant.ServerInfo; import com.njcn.common.pojo.response.HttpResult; import com.njcn.prepare.harmonic.api.event.fallback.SpThroughFeignClientFallbackFactory; +import com.njcn.prepare.harmonic.pojo.param.SpThroughParam; +import com.njcn.prepare.harmonic.pojo.vo.SpThroughVO; import org.springframework.cloud.openfeign.FeignClient; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import java.util.List; /** * 高低电压穿越Feign客户端 @@ -20,4 +25,10 @@ public interface SpThroughFeignClient { @PostMapping("/record") HttpResult record(); + + @PostMapping("/getDataByEventIds") + HttpResult getDataByEventIds(@RequestBody @Validated SpThroughParam spThroughParam); + + @PostMapping("/formatEventIds") + HttpResult> formatEventIds(@RequestBody @Validated SpThroughParam spThroughParam); } diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/SpThroughFeignClientFallbackFactory.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/SpThroughFeignClientFallbackFactory.java index 63361c1ea..c4b5bec83 100644 --- a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/SpThroughFeignClientFallbackFactory.java +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/api/event/fallback/SpThroughFeignClientFallbackFactory.java @@ -4,10 +4,13 @@ import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.exception.BusinessException; import com.njcn.common.pojo.response.HttpResult; import com.njcn.prepare.harmonic.api.event.SpThroughFeignClient; +import com.njcn.prepare.harmonic.pojo.param.SpThroughParam; +import com.njcn.prepare.harmonic.pojo.vo.SpThroughVO; import com.njcn.prepare.harmonic.utils.PrepareEnumUtil; import feign.hystrix.FallbackFactory; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; +import java.util.List; /** * 高低电压穿越熔断降级 @@ -33,6 +36,18 @@ public class SpThroughFeignClientFallbackFactory implements FallbackFactory getDataByEventIds(SpThroughParam spThroughParam) { + log.error("{}异常,降级处理,异常为:{}", "根据事件ID集合及能源站类型获取高低电压穿越次数: ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } + + @Override + public HttpResult> formatEventIds(SpThroughParam spThroughParam) { + log.error("{}异常,降级处理,异常为:{}", "根据原有的事件集合进行过滤: ", throwable.toString()); + throw new BusinessException(finalExceptionEnum); + } }; } } diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/SpThroughParam.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/SpThroughParam.java new file mode 100644 index 000000000..619ba9c82 --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/param/SpThroughParam.java @@ -0,0 +1,27 @@ +package com.njcn.prepare.harmonic.pojo.param; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import java.util.List; + +/** + * @author guofeihu + * @since 2024-08-14 + */ +@Data +public class SpThroughParam { + + @ApiModelProperty(name = "eventIds",value = "事件ID集合") + private List eventIds; + + @ApiModelProperty(name = "lineType",value = "监测点类别(1:风电场、2:光伏电站)") + private String stationType; + + public SpThroughParam(List eventIds, String stationType) { + this.eventIds = eventIds; + this.stationType = stationType; + } + + public SpThroughParam() { + } +} diff --git a/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/vo/SpThroughVO.java b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/vo/SpThroughVO.java new file mode 100644 index 000000000..dc382cf6e --- /dev/null +++ b/pqs-prepare/prepare-api/src/main/java/com/njcn/prepare/harmonic/pojo/vo/SpThroughVO.java @@ -0,0 +1,19 @@ +package com.njcn.prepare.harmonic.pojo.vo; + +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @author guofeihu + * @since 2024-08-14 + */ +@Data +public class SpThroughVO { + + @ApiModelProperty("低压次数") + private String lowPressure; + + @ApiModelProperty("高压次数") + private String highPressure; + +} diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/SpThroughController.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/SpThroughController.java index 32f087986..c4d58c008 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/SpThroughController.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/controller/event/SpThroughController.java @@ -6,7 +6,8 @@ import com.njcn.common.pojo.enums.common.LogEnum; import com.njcn.common.pojo.enums.response.CommonResponseEnum; import com.njcn.common.pojo.response.HttpResult; import com.njcn.common.utils.HttpResultUtil; -import com.njcn.prepare.harmonic.pojo.po.SpThroughPO; +import com.njcn.prepare.harmonic.pojo.param.SpThroughParam; +import com.njcn.prepare.harmonic.pojo.vo.SpThroughVO; import com.njcn.prepare.harmonic.service.mysql.event.SpThroughService; import com.njcn.web.controller.BaseController; import io.swagger.annotations.Api; @@ -45,11 +46,19 @@ public class SpThroughController extends BaseController { } @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY) - @PostMapping("/getDataByLineIds") - @ApiOperation("根据监测点ID集合获取高低电压穿越信息") - public HttpResult> getDataByLineIds(@RequestBody List lineIds) { - String methodDescribe = getMethodDescribe("getDataByLineIds"); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, spThroughService.getDataByLineIds(lineIds), methodDescribe); + @PostMapping("/getDataByEventIds") + @ApiOperation("根据事件ID集合及能源站类型获取高低电压穿越次数") + public HttpResult getDataByEventIds(@RequestBody SpThroughParam spThroughParam) { + String methodDescribe = getMethodDescribe("getDataByEventIds"); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, spThroughService.getDataByEventIds(spThroughParam), methodDescribe); + } + + @OperateInfo(info = LogEnum.BUSINESS_COMMON,operateType = OperateType.QUERY) + @PostMapping("/formatEventIds") + @ApiOperation("根据原有的事件集合进行过滤") + public HttpResult> formatEventIds(@RequestBody SpThroughParam spThroughParam) { + String methodDescribe = getMethodDescribe("formatEventIds"); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, spThroughService.formatEventIds(spThroughParam), methodDescribe); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java index 55e90ed54..ad6e80dbc 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/Impl/event/SpThroughServiceImpl.java @@ -1,11 +1,25 @@ package com.njcn.prepare.harmonic.service.mysql.Impl.event; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.jeffreyning.mybatisplus.service.MppServiceImpl; +import com.njcn.device.biz.commApi.CommLineClient; +import com.njcn.device.biz.pojo.dto.LineDTO; +import com.njcn.device.pq.api.NewStationClient; +import com.njcn.device.pq.constant.Param; +import com.njcn.device.pq.pojo.po.NewStation; +import com.njcn.event.api.EventDetailFeignClient; +import com.njcn.event.pojo.po.RmpEventDetailPO; import com.njcn.prepare.harmonic.mapper.mysql.event.SpThroughMapper; +import com.njcn.prepare.harmonic.pojo.param.SpThroughParam; import com.njcn.prepare.harmonic.pojo.po.SpThroughPO; +import com.njcn.prepare.harmonic.pojo.vo.SpThroughVO; import com.njcn.prepare.harmonic.service.mysql.event.SpThroughService; +import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.time.LocalDateTime; import java.util.List; +import java.util.stream.Collectors; /** * 高低电压穿越 服务实现类 @@ -13,15 +27,105 @@ import java.util.List; * @since 2024-08-22 */ @Service +@RequiredArgsConstructor public class SpThroughServiceImpl extends MppServiceImpl implements SpThroughService { + private final EventDetailFeignClient eventDetailFeignClient; + + private final CommLineClient commLineClient; + + private final NewStationClient newStationClient; + @Override public void record() { + LocalDateTime currentTime = LocalDateTime.now(); + //获取最新的暂态事件信息(截至目前为止) + List evenStDetailPOS = eventDetailFeignClient.getNewEventDetailByTime(getLastTime(),currentTime).getData(); + for(RmpEventDetailPO rmpEventDetailPO : evenStDetailPOS){ + //获取监测点 + LineDTO lineDTO = commLineClient.getLineDetail(rmpEventDetailPO.getMeasurementPointId()).getData(); + if(lineDTO != null && lineDTO.getNewStationId() != null){ + NewStation newStation = newStationClient.selectById(lineDTO.getNewStationId()).getData(); + if(newStation != null){ + //暂升事件 + if(Param.UPPEREVENT.equals(rmpEventDetailPO.getEventType())){ + //风电场 + if(Param.WINDFARM.equals(newStation.getStationType())){ + } + //光伏电站 + if(Param.PHOTOVOLTAICPOWER.equals(newStation.getStationType())){ + + } + } + //暂降事件 + if(Param.LOWEREVENT.equals(rmpEventDetailPO.getEventType())){ + //风电场 + if(Param.WINDFARM.equals(newStation.getStationType())){ + + } + //光伏电站 + if(Param.PHOTOVOLTAICPOWER.equals(newStation.getStationType())){ + + } + } + } + } + } + + } + + //拿到最近一次插入高低电压穿越表信息的时间 + private LocalDateTime getLastTime(){ + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + lambdaQueryWrapper.orderByDesc(SpThroughPO::getCreateTime); + Page page = new Page<>(1, 1); + List spThroughPOS = this.baseMapper.selectPage(page,lambdaQueryWrapper).getRecords(); + if(!spThroughPOS.isEmpty()){ + return spThroughPOS.get(0).getCreateTime(); + } + return null; } @Override - public List getDataByLineIds(List lineIds) { - return null; + public SpThroughVO getDataByEventIds(SpThroughParam spThroughParam) { + SpThroughVO spThroughVO = new SpThroughVO(); + LambdaQueryWrapper upperLambdaQueryWrapper = new LambdaQueryWrapper(); + upperLambdaQueryWrapper.in(SpThroughPO::getEventId,spThroughParam.getEventIds()) + .eq(SpThroughPO::getIsOrNot,1) + .eq(SpThroughPO::getStationType,spThroughParam.getStationType().equals("1")?Param.WINDFARM:Param.PHOTOVOLTAICPOWER) + .eq(SpThroughPO::getState,1) + .eq(SpThroughPO::getEventType,Param.UPPEREVENT); + Integer upperCount = this.baseMapper.selectCount(upperLambdaQueryWrapper); + spThroughVO.setHighPressure(upperCount == 0?null:upperCount.toString()); + + LambdaQueryWrapper lowLambdaQueryWrapper = new LambdaQueryWrapper(); + lowLambdaQueryWrapper.in(SpThroughPO::getEventId,spThroughParam.getEventIds()) + .eq(SpThroughPO::getIsOrNot,1) + .eq(SpThroughPO::getStationType,spThroughParam.getStationType().equals("1")?Param.WINDFARM:Param.PHOTOVOLTAICPOWER) + .eq(SpThroughPO::getState,1) + .eq(SpThroughPO::getEventType,Param.LOWEREVENT); + Integer lowCount = this.baseMapper.selectCount(lowLambdaQueryWrapper); + spThroughVO.setLowPressure(lowCount == 0?null:lowCount.toString()); + return spThroughVO; + } + + /** + * 说明: + * 此方法是专门提供给event模块-高低压穿越模块中-根据区域获取暂态事件列表使用 + * 根据区域获取各个子区域高低电压穿越次数是基于sp_through表中记录来的 那么在根据区域获取暂态事件列表数据也应该基于sp_through表中记录来 + * 因为如果不基于sp_through表中记录来 那么根据区域获取暂态事件可能数据非常多且可能一部分的事件数据并没有被定时任务(record方法)所执行 + * @param spThroughParam + * @return + */ + @Override + public List formatEventIds(SpThroughParam spThroughParam) { + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper(); + lambdaQueryWrapper.in(SpThroughPO::getEventId,spThroughParam.getEventIds()) + .eq(SpThroughPO::getIsOrNot,1) + .eq(SpThroughPO::getStationType,spThroughParam.getStationType().equals("1")?Param.WINDFARM:Param.PHOTOVOLTAICPOWER) + .eq(SpThroughPO::getState,1); + List spThroughPOS = this.baseMapper.selectList(lambdaQueryWrapper); + return spThroughPOS.stream().map(SpThroughPO::getEventId).collect(Collectors.toList()); } } diff --git a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/event/SpThroughService.java b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/event/SpThroughService.java index 297213e98..0ec47c5cf 100644 --- a/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/event/SpThroughService.java +++ b/pqs-prepare/prepare-boot/src/main/java/com/njcn/prepare/harmonic/service/mysql/event/SpThroughService.java @@ -1,7 +1,9 @@ package com.njcn.prepare.harmonic.service.mysql.event; import com.github.jeffreyning.mybatisplus.service.IMppService; +import com.njcn.prepare.harmonic.pojo.param.SpThroughParam; import com.njcn.prepare.harmonic.pojo.po.SpThroughPO; +import com.njcn.prepare.harmonic.pojo.vo.SpThroughVO; import java.util.List; /** @@ -17,8 +19,13 @@ public interface SpThroughService extends IMppService { void record(); /** - * 根据监测点ID集合获取高低电压穿越信息 + * 根据事件ID集合及能源站类型获取高低电压穿越次数 */ - List getDataByLineIds(List lineIds); + SpThroughVO getDataByEventIds(SpThroughParam spThroughParam); + + /** + * 根据原有的事件集合进行过滤 + */ + List formatEventIds(SpThroughParam spThroughParam); }