From 02e510042624723bb2c1b48b0c34b661931823ae Mon Sep 17 00:00:00 2001 From: chendaofei <857448963@qq.com> Date: Wed, 26 Nov 2025 08:43:19 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=9A=82=E9=99=8D=E6=A6=82=E8=A7=88=E4=B8=8B?= =?UTF-8?q?=E7=A9=BF=E9=A1=B5=E9=9D=A2=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../csdevice/pojo/vo/DataGroupEventVO.java | 3 + .../pojo/vo/event/EventCoordsVO.java | 43 +++- .../csharmonic/pojo/vo/event/F47Curve.java | 15 +- .../controller/CsEventController.java | 10 + .../controller/EventOverviewController.java | 6 +- .../csharmonic/service/CsEventPOService.java | 4 + .../service/event/EventOverviewService.java | 2 +- .../service/impl/CsEventPOServiceImpl.java | 38 ++++ .../impl/event/EventOverviewServiceImpl.java | 188 ++++++++++++------ 9 files changed, 229 insertions(+), 80 deletions(-) diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/DataGroupEventVO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/DataGroupEventVO.java index 01abe4f..d908a10 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/DataGroupEventVO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/vo/DataGroupEventVO.java @@ -5,6 +5,7 @@ import io.swagger.annotations.ApiModelProperty; import lombok.Data; import org.springframework.format.annotation.DateTimeFormat; +import java.math.BigDecimal; import java.time.LocalDateTime; /** @@ -60,6 +61,8 @@ public class DataGroupEventVO { @ApiModelProperty("暂降幅值") private Float featureAmplitude; + private Double amplitude; + @ApiModelProperty("波形路径") private String wavePath; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventCoordsVO.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventCoordsVO.java index 6001651..2076770 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventCoordsVO.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/EventCoordsVO.java @@ -5,22 +5,49 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.List; + /** * @Author: cdf * @CreateTime: 2025-11-24 * @Description: */ @Data -@AllArgsConstructor -@NoArgsConstructor public class EventCoordsVO { - @ApiModelProperty(name = "x",value = "x轴") - private Integer x; + @ApiModelProperty(name = "xList",value = "下面的图x轴") + private List xList; - @ApiModelProperty(name = "y",value = "y轴") - private Integer y; + @ApiModelProperty(name = "trendList",value = "下面的图y轴") + private List trendList; + + @ApiModelProperty(name = "innerList",value = "xyz图") + private List innerList; + + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class inner { + @ApiModelProperty(name = "x",value = "x轴") + private Integer x; + + @ApiModelProperty(name = "y",value = "y轴") + private Integer y; + + @ApiModelProperty(name = "z",value = "z轴") + private Integer z; + } + + + @Data + @AllArgsConstructor + @NoArgsConstructor + public static class TagObj { + @ApiModelProperty(name = "name",value = "名称") + private String name; + @ApiModelProperty(name = "trendList",value = "y轴数据") + private List trendList; + } - @ApiModelProperty(name = "z",value = "z轴") - private Integer z; } diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java index ec573eb..14278cf 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/pojo/vo/event/F47Curve.java @@ -1,8 +1,11 @@ package com.njcn.csharmonic.pojo.vo.event; +import com.fasterxml.jackson.annotation.JsonFormat; +import io.swagger.annotations.ApiModelProperty; import lombok.Data; import java.math.BigDecimal; +import java.time.LocalDateTime; /** * @Author: cdf @@ -12,13 +15,21 @@ import java.math.BigDecimal; @Data public class F47Curve { - private String id; + @ApiModelProperty(name = "eventId", value = "暂降id") + private String eventId; + @ApiModelProperty(name = "time", value = "事件发生时间") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS",timezone = "GMT+8") + private LocalDateTime time; + + @ApiModelProperty(name = "tag", value = "事件类型") private String tag; + @ApiModelProperty(name = "persistTime", value = "持续时间(ms)") private BigDecimal persistTime; - private BigDecimal amplitude; + @ApiModelProperty(name = "eventValue", value = "特征幅值") + private BigDecimal eventValue; } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsEventController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsEventController.java index 3fc2b67..bcbcca6 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsEventController.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/CsEventController.java @@ -11,6 +11,7 @@ import com.njcn.csharmonic.param.CldEventParam; import com.njcn.csharmonic.param.CsEventUserQueryPage; import com.njcn.csharmonic.param.CsEventUserQueryParam; import com.njcn.csharmonic.param.DataParam; +import com.njcn.csharmonic.pojo.param.EventStatisticParam; import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.vo.CsEventVO; import com.njcn.csharmonic.pojo.vo.EventDetailVO; @@ -65,6 +66,15 @@ public class CsEventController extends BaseController { return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) + @PostMapping("/pageEvent") + @ApiOperation("分页查询暂降事件") + public HttpResult> pageEvent(@RequestBody EventStatisticParam baseParam) { + String methodDescribe = getMethodDescribe("pageEvent"); + Page page = csEventPOService.pageEvent(baseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS, page, methodDescribe); + } + @OperateInfo(info = LogEnum.BUSINESS_COMMON) @GetMapping("/analyseWave") @ApiOperation("暂态事件波形分析") diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventOverviewController.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventOverviewController.java index 30f343c..7df7621 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventOverviewController.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/controller/EventOverviewController.java @@ -84,10 +84,10 @@ public class EventOverviewController extends BaseController { @OperateInfo(info = LogEnum.BUSINESS_COMMON) @PostMapping("/getEventCoords") @ApiOperation("获取电压暂态表及密度坐标图") - public HttpResult> getEventCoords(@RequestBody EventStatisticParam baseParam){ + public HttpResult getEventCoords(@RequestBody EventStatisticParam baseParam){ String methodDescribe = getMethodDescribe("getEventCoords"); - List list = eventOverviewService.getEventCoords(baseParam); - return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,list,methodDescribe); + EventCoordsVO vo = eventOverviewService.getEventCoords(baseParam); + return HttpResultUtil.assembleCommonResponseResult(CommonResponseEnum.SUCCESS,vo,methodDescribe); } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/CsEventPOService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/CsEventPOService.java index 8abdd2c..02df09f 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/CsEventPOService.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/CsEventPOService.java @@ -7,11 +7,13 @@ import com.njcn.csharmonic.param.CldEventParam; import com.njcn.csharmonic.param.CsEventUserQueryPage; import com.njcn.csharmonic.param.CsEventUserQueryParam; import com.njcn.csharmonic.param.DataParam; +import com.njcn.csharmonic.pojo.param.EventStatisticParam; import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.vo.CsEventVO; import com.njcn.csharmonic.pojo.vo.EventDetailVO; import com.njcn.csharmonic.pojo.vo.EventStatisticsVo; import com.njcn.event.file.pojo.dto.WaveDataDTO; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; import javax.servlet.http.HttpServletResponse; @@ -51,6 +53,8 @@ public interface CsEventPOService extends IService{ Page pageQueryByLineId(CsEventUserQueryPage csEventUserQueryPage); + Page pageEvent(EventStatisticParam baseParam); + void saveBatchEventList(List csEventPOS); void getFileZip(String eventId,HttpServletResponse response); diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventOverviewService.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventOverviewService.java index b0176ab..ec94b23 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventOverviewService.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/event/EventOverviewService.java @@ -27,5 +27,5 @@ public interface EventOverviewService { List getEventDate(EventStatisticParam baseParam); - List getEventCoords(EventStatisticParam baseParam); + EventCoordsVO getEventCoords(EventStatisticParam baseParam); } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java index b538208..72fcdba 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventPOServiceImpl.java @@ -19,11 +19,13 @@ import com.njcn.csdevice.enums.AlgorithmResponseEnum; import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.DataGroupEventVO; +import com.njcn.csharmonic.enums.CsEventEnum; import com.njcn.csharmonic.mapper.CsEventPOMapper; import com.njcn.csharmonic.param.CldEventParam; import com.njcn.csharmonic.param.CsEventUserQueryPage; import com.njcn.csharmonic.param.CsEventUserQueryParam; import com.njcn.csharmonic.param.DataParam; +import com.njcn.csharmonic.pojo.param.EventStatisticParam; import com.njcn.csharmonic.pojo.po.CsEventPO; import com.njcn.csharmonic.pojo.vo.CsEventVO; import com.njcn.csharmonic.pojo.vo.EventDetailVO; @@ -48,6 +50,7 @@ import com.njcn.system.api.EleEvtFeignClient; import com.njcn.system.api.EpdFeignClient; import com.njcn.system.pojo.po.EleEpdPqd; import com.njcn.system.pojo.po.EleEvtParm; +import com.njcn.web.factory.PageFactory; import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -73,6 +76,8 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; +import static com.njcn.csharmonic.enums.CsTransientEnum.*; + /** * Description: * Date: 2023/9/4 15:15【需求编号】 @@ -166,6 +171,39 @@ public class CsEventPOServiceImpl extends ServiceImpl pageEvent(EventStatisticParam baseParam) { + Page result = new Page<>(PageFactory.getPageNum(baseParam),PageFactory.getPageSize(baseParam)); + DateTime begin = DateUtil.parse(baseParam.getSearchBeginTime(), DatePattern.NORM_DATE_PATTERN); + DateTime end = DateUtil.parse(baseParam.getSearchEndTime(), DatePattern.NORM_DATE_PATTERN); + + List EVENT_TAGS = Arrays.asList( + EVT_SYS_DIPSTR.getCode(), + EVT_SYS_INTRSTRr.getCode(), + EVT_SYS_SWLSTR.getCode() + ); + + LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); + lambdaQueryWrapper.eq(StrUtil.isNotBlank(baseParam.getLineId()),CsEventPO::getLineId,baseParam.getLineId()) + .eq(CsEventPO::getType, CsEventEnum.EVENT_TYPE.getCode()) + .in(CsEventPO::getTag, EVENT_TAGS) + .between(CsEventPO::getStartTime,begin,end) + .orderByDesc(CsEventPO::getStartTime); + Page page = this.page(new Page<>(PageFactory.getPageNum(baseParam),PageFactory.getPageSize(baseParam)),lambdaQueryWrapper); + if(CollUtil.isNotEmpty(page.getRecords())){ + + List ids = page.getRecords().stream().map(CsEventPO::getLineId).distinct().collect(Collectors.toList()); + List csLinePOList = csLineFeignClient.queryLineById(ids).getData(); + Map linePOMap = csLinePOList.stream().collect(Collectors.toMap(CsLinePO::getLineId, CsLinePO::getName)); + + List dataGroupEventVOList = BeanUtil.copyToList(page.getRecords(),DataGroupEventVO.class); + dataGroupEventVOList.forEach(item->item.setLineName(linePOMap.getOrDefault(item.getLineId(),"/"))); + result.setRecords(dataGroupEventVOList); + result.setTotal(page.getTotal()); + } + return result; + } + @Override @Transactional public void saveBatchEventList(List csEventPOS) { diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java index 39ace86..08df9b4 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/event/EventOverviewServiceImpl.java @@ -3,6 +3,7 @@ package com.njcn.csharmonic.service.impl.event; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.date.*; import cn.hutool.core.util.StrUtil; +import com.alibaba.nacos.shaded.org.checkerframework.checker.units.qual.C; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.google.common.collect.ImmutableMap; @@ -24,8 +25,14 @@ import com.njcn.web.utils.RequestUtil; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import java.math.BigDecimal; +import java.math.RoundingMode; +import java.time.format.DateTimeFormatter; import java.util.*; import java.util.stream.Collectors; +import java.util.stream.IntStream; +import java.util.stream.Stream; + +import static com.njcn.csharmonic.enums.CsTransientEnum.*; /** * @Author: cdf @@ -36,9 +43,9 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class EventOverviewServiceImpl implements EventOverviewService { private static final List EVENT_TAGS = Arrays.asList( - CsTransientEnum.EVT_SYS_DIPSTR.getCode(), - CsTransientEnum.EVT_SYS_INTRSTRr.getCode(), - CsTransientEnum.EVT_SYS_SWLSTR.getCode() + EVT_SYS_DIPSTR.getCode(), + EVT_SYS_INTRSTRr.getCode(), + EVT_SYS_SWLSTR.getCode() ); private final CsEventPOService csEventPOService; @@ -47,26 +54,29 @@ public class EventOverviewServiceImpl implements EventOverviewService { @Override public EventStatisticVO netEventEcharts(EventStatisticParam baseParam) { + EventStatisticVO result = new EventStatisticVO(); DateTime start = DateUtil.beginOfDay(DateUtil.parse(baseParam.getSearchBeginTime())); DateTime end = DateUtil.endOfDay(DateUtil.parse(baseParam.getSearchEndTime())); List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); - + if(CollUtil.isEmpty(ids)){ + return result; + } List csEventPOList = csEventPOService.lambdaQuery() .between(CsEventPO::getStartTime, start, end) .eq(CsEventPO::getType, CsEventEnum.EVENT_TYPE.getCode()) .in(CsEventPO::getTag, EVENT_TAGS) - //TODO + // .in(CsEventPO::getLineId,ids) .list(); - EventStatisticVO result = new EventStatisticVO(); + if (CollUtil.isEmpty(csEventPOList)) { return result; } Map eventCountByTag = csEventPOList.stream().collect(Collectors.groupingBy(CsEventPO::getTag, Collectors.counting())); - result.setEventDown(eventCountByTag.getOrDefault(CsTransientEnum.EVT_SYS_DIPSTR.getCode(), 0L).intValue()); - result.setEventOff(eventCountByTag.getOrDefault(CsTransientEnum.EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); - result.setEventUp(eventCountByTag.getOrDefault(CsTransientEnum.EVT_SYS_SWLSTR.getCode(), 0L).intValue()); + result.setEventDown(eventCountByTag.getOrDefault(EVT_SYS_DIPSTR.getCode(), 0L).intValue()); + result.setEventOff(eventCountByTag.getOrDefault(EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); + result.setEventUp(eventCountByTag.getOrDefault(EVT_SYS_SWLSTR.getCode(), 0L).intValue()); result.setAllNum(csEventPOList.size()); return result; } @@ -76,13 +86,13 @@ public class EventOverviewServiceImpl implements EventOverviewService { DateTime start = DateUtil.beginOfDay(DateUtil.parse(baseParam.getSearchBeginTime())); DateTime end = DateUtil.endOfDay(DateUtil.parse(baseParam.getSearchEndTime())); - List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); - - List lineIds = StrUtil.isBlank(baseParam.getSearchValue()) ? csLineFeignClient.getAllLine().getData() : Collections.singletonList(baseParam.getSearchValue()); + if(CollUtil.isEmpty(lineIds)){ + return Collections.emptyList(); + } List csLinePOList = csLineFeignClient.queryLineById(lineIds).getData(); if (CollUtil.isEmpty(csLinePOList)) { return Collections.emptyList(); @@ -126,9 +136,9 @@ public class EventOverviewServiceImpl implements EventOverviewService { vo.setName(line.getName()); Map lineEvents = eventCountByLineAndTag.getOrDefault(line.getLineId(), Collections.emptyMap()); - vo.setEventDown(lineEvents.getOrDefault(CsTransientEnum.EVT_SYS_DIPSTR.getCode(), 0L).intValue()); - vo.setEventOff(lineEvents.getOrDefault(CsTransientEnum.EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); - vo.setEventUp(lineEvents.getOrDefault(CsTransientEnum.EVT_SYS_SWLSTR.getCode(), 0L).intValue()); + vo.setEventDown(lineEvents.getOrDefault(EVT_SYS_DIPSTR.getCode(), 0L).intValue()); + vo.setEventOff(lineEvents.getOrDefault(EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); + vo.setEventUp(lineEvents.getOrDefault(EVT_SYS_SWLSTR.getCode(), 0L).intValue()); return vo; }).sorted(Comparator.comparing(EventStatisticVO::getEventDown, Comparator.reverseOrder()) @@ -141,22 +151,25 @@ public class EventOverviewServiceImpl implements EventOverviewService { DateTime start = DateUtil.beginOfDay(DateUtil.parse(baseParam.getSearchBeginTime())); DateTime end = DateUtil.endOfDay(DateUtil.parse(baseParam.getSearchEndTime())); - List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); + /* List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); + if(CollUtil.isEmpty(ids)){ + return Collections.emptyList(); + }*/ - - List csEventPOList = csEventPOService.lambdaQuery().select(CsEventPO::getId,CsEventPO::getTag,CsEventPO::getPersistTime,CsEventPO::getAmplitude) + List csEventPOList = csEventPOService.lambdaQuery().select(CsEventPO::getId,CsEventPO::getStartTime,CsEventPO::getTag,CsEventPO::getPersistTime,CsEventPO::getAmplitude) .between(CsEventPO::getStartTime, start, end) .eq(CsEventPO::getType, CsEventEnum.EVENT_TYPE.getCode()) .in(CsEventPO::getTag, EVENT_TAGS) - //TODO + // .in(CsEventPO::getLineId,ids) .list(); List f47CurveList = csEventPOList.stream().map(item->{ F47Curve f47Curve = new F47Curve(); - f47Curve.setId(item.getId()); + f47Curve.setEventId(item.getId()); + f47Curve.setTime(item.getStartTime()); f47Curve.setTag(item.getTag()); - f47Curve.setPersistTime(BigDecimal.valueOf(item.getPersistTime())); - f47Curve.setAmplitude(BigDecimal.valueOf(item.getAmplitude())); + f47Curve.setPersistTime(BigDecimal.valueOf(item.getPersistTime()).setScale(3, RoundingMode.HALF_UP)); + f47Curve.setEventValue(BigDecimal.valueOf(item.getAmplitude())); return f47Curve; }).collect(Collectors.toList()); return f47CurveList; @@ -167,21 +180,20 @@ public class EventOverviewServiceImpl implements EventOverviewService { if(StrUtil.isBlank(baseParam.getSearchBeginTime())){ throw new BusinessException(CommonResponseEnum.FAIL,"月份不可为空"); } - DateTime dateTime = DateUtil.parse(baseParam.getSearchBeginTime(), DatePattern.NORM_MONTH_PATTERN); + DateTime dateTime = DateUtil.parse(baseParam.getSearchBeginTime(), DatePattern.NORM_DATE_PATTERN); DateTime start = DateUtil.beginOfMonth(dateTime); DateTime end = DateUtil.endOfMonth(dateTime); - List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); - - + /* List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); + if(CollUtil.isEmpty(ids)){ + return Collections.emptyList(); + }*/ List rangList = DateUtil.rangeToList(start,end, DateField.DAY_OF_MONTH); - - List csEventPOList = csEventPOService.lambdaQuery().select(CsEventPO::getId,CsEventPO::getTag,CsEventPO::getStartTime,CsEventPO::getPersistTime,CsEventPO::getAmplitude) .between(CsEventPO::getStartTime, start, end) .eq(CsEventPO::getType, CsEventEnum.EVENT_TYPE.getCode()) .in(CsEventPO::getTag, EVENT_TAGS) - //TODO + // .in(CsEventPO::getLineId,ids) .list(); if(CollUtil.isEmpty(csEventPOList)){ @@ -203,22 +215,31 @@ public class EventOverviewServiceImpl implements EventOverviewService { eventStatisticVO.setName(day); Map itemMap = map.getOrDefault(day,Collections.emptyMap()); - eventStatisticVO.setEventDown(itemMap.getOrDefault(CsTransientEnum.EVT_SYS_DIPSTR.getCode(), 0L).intValue()); - eventStatisticVO.setEventOff(itemMap.getOrDefault(CsTransientEnum.EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); - eventStatisticVO.setEventUp(itemMap.getOrDefault(CsTransientEnum.EVT_SYS_SWLSTR.getCode(), 0L).intValue()); + eventStatisticVO.setEventDown(itemMap.getOrDefault(EVT_SYS_DIPSTR.getCode(), 0L).intValue()); + eventStatisticVO.setEventOff(itemMap.getOrDefault(EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); + eventStatisticVO.setEventUp(itemMap.getOrDefault(EVT_SYS_SWLSTR.getCode(), 0L).intValue()); return eventStatisticVO; }).collect(Collectors.toList()); } @Override - public List getEventCoords(EventStatisticParam baseParam) { + public EventCoordsVO getEventCoords(EventStatisticParam baseParam) { + EventCoordsVO eventCoordsVO = new EventCoordsVO(); // 初始化结果列表 - List result = new ArrayList<>(90); + List result = new ArrayList<>(50); for (int i = 0; i < 10; i++) { - for (int j = 0; j < 9; j++) { - result.add(new EventCoordsVO(i, j, 0)); + for (int j = 0; j < 5; j++) { + result.add(new EventCoordsVO.inner(i, j, 0)); } } + + + + /* List ids = csCommTerminalFeignClient.getLineIdsByUser(RequestUtil.getUserIndex()).getData(); + if(CollUtil.isEmpty(ids)){ + return result; + }*/ + //查询监测点未处理暂态事件 DateTime start = DateUtil.beginOfDay(DateUtil.parse(baseParam.getSearchBeginTime())); DateTime end = DateUtil.endOfDay(DateUtil.parse(baseParam.getSearchEndTime())); @@ -226,62 +247,95 @@ public class EventOverviewServiceImpl implements EventOverviewService { .between(CsEventPO::getStartTime, start, end) .eq(CsEventPO::getType, CsEventEnum.EVENT_TYPE.getCode()) .in(CsEventPO::getTag, EVENT_TAGS) - //TODO + // .in(CsEventPO::getLineId,ids) .list(); // 定义幅值和持续时间的分类规则 Map amplitudeRanges = ImmutableMap.builder() .put(0.0, 0) - .put(0.1, 1) - .put(0.2, 2) - .put(0.3, 3) - .put(0.4, 4) - .put(0.5, 5) - .put(0.6, 6) - .put(0.7, 7) - .put(0.8, 8) - .put(0.9, 9) + .put(10.0, 1) + .put(20.0, 2) + .put(30.0, 3) + .put(40.0, 4) + .put(50.0, 5) + .put(60.0, 6) + .put(70.0, 7) + .put(80.0, 8) + .put(90.0, 9) // 默认分类 .put(Double.MAX_VALUE, 10) .build(); // 持续时间分类规则 Map persistTimeRanges = ImmutableMap.builder() - .put(0.0, 0) - .put(0.020, 1) - .put(0.040, 2) - .put(0.060, 3) - .put(0.080, 4) - .put(0.120, 5) - .put(0.200, 6) - .put(0.400, 7) - .put(0.600, 8) - .put(1.200, 9) + .put(0.01, 0) + .put(0.1, 1) + .put(1.0, 2) + .put(10.0, 3) + .put(1000.0, 4) + .build(); + + // 时间段分类规则 + Map startTimeRanges = ImmutableMap.builder() + .put(8.0, 0) + .put(12.0, 1) + .put(14.0, 2) + .put(18.0, 3) + .put(24.0, 4) .build(); // 分类事件 + // 0:down, 1:off, 2:up + List[] timeSegmentStats = new List[3]; + for (int i = 0; i < timeSegmentStats.length; i++) { + timeSegmentStats[i] = IntStream.range(0, 5).boxed().collect(Collectors.toList()); + } for (CsEventPO event : events) { double amplitude = event.getAmplitude(); - double persistTimeSec = event.getPersistTime() / 1000.0; + double persistTimeSec = event.getPersistTime(); - // 确定振幅分类 + // 确定幅值分类 int amplitudeGroup = getRangeGroup(amplitudeRanges, amplitude); - // 确定持续时间分类(振幅分类作为行,持续时间分类作为列) + // 确定持续时间分类(幅值分类作为行,持续时间分类作为列) int persistTimeGroup = getRangeGroup(persistTimeRanges, persistTimeSec); - // 计算索引:行 = 振幅分组,列 = 持续时间分组 + // 计算索引:行 = 幅值分组,列 = 持续时间分组 int row = amplitudeGroup; int col = persistTimeGroup; - // 10行 x 9列的网格 - int index = row * 9 + col; + // 10行 x 5列的网格 + int index = row * 5 + col; - // 安全更新结果 if (index >= 0 && index < result.size()) { - EventCoordsVO coordsVO = result.get(index); - coordsVO.setZ(coordsVO.getZ() + 1); + EventCoordsVO.inner inner = result.get(index); + inner.setZ(inner.getZ() + 1); + } + + int hour = event.getStartTime().getHour(); + int startTimeGroup = getRangeGroup(startTimeRanges, hour); + + String tag = event.getTag(); + if (EVT_SYS_DIPSTR.getCode().equals(tag)) { + timeSegmentStats[0].set(startTimeGroup, timeSegmentStats[0].get(startTimeGroup) + 1); + } else if (EVT_SYS_INTRSTRr.getCode().equals(tag)) { + timeSegmentStats[1].set(startTimeGroup, timeSegmentStats[1].get(startTimeGroup) + 1); + } else if (EVT_SYS_SWLSTR.getCode().equals(tag)) { + timeSegmentStats[2].set(startTimeGroup, timeSegmentStats[2].get(startTimeGroup) + 1); } } - return result; + eventCoordsVO.setInnerList(result); + List xList = Stream.of("0时-8时","8时-12时","12时-14时","14时-18时","18时-24时").collect(Collectors.toList()); + + List trendList = Arrays.asList( + new EventCoordsVO.TagObj(EVT_SYS_DIPSTR.getCode(), + timeSegmentStats[0]), + new EventCoordsVO.TagObj(EVT_SYS_INTRSTRr.getCode(), + timeSegmentStats[1]), + new EventCoordsVO.TagObj(EVT_SYS_SWLSTR.getCode(), + timeSegmentStats[2]) + ); + eventCoordsVO.setXList(xList); + eventCoordsVO.setTrendList(trendList); + return eventCoordsVO; } /** @@ -296,4 +350,6 @@ public class EventOverviewServiceImpl implements EventOverviewService { // 默认返回最大分组 return ranges.size() - 1; } + + }