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 d908a10..52e812e 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 @@ -61,8 +61,12 @@ public class DataGroupEventVO { @ApiModelProperty("暂降幅值") private Float featureAmplitude; + @ApiModelProperty("映射数据库暂降幅值") private Double amplitude; + @ApiModelProperty("严重度") + private String severity; + @ApiModelProperty("波形路径") private String wavePath; diff --git a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsTransientEnum.java b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsTransientEnum.java index 193157c..50517be 100644 --- a/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsTransientEnum.java +++ b/cs-harmonic/cs-harmonic-api/src/main/java/com/njcn/csharmonic/enums/CsTransientEnum.java @@ -11,7 +11,7 @@ public enum CsTransientEnum { EVT_SYS_DIPSTR("Evt_Sys_DipStr","电压暂降"), - EVT_SYS_INTRSTRr("Evt_Sys_IntrStr","电压中断"), + EVT_SYS_INTRSTR("Evt_Sys_IntrStr","电压中断"), EVT_SYS_SWLSTR("Evt_Sys_SwlStr","电压暂升"), TRANSIENT("Transient","录波"), UN_KNOW("Un_Know","未知") @@ -27,4 +27,26 @@ public enum CsTransientEnum { this.code = code; this.name = name; } + + + + /** + * 根据code获取对应的name + * @param code 枚举编码 + * @return 匹配的名称,未匹配时返回"未知",code为null时返回"未知" + */ + public static String getNameByCode(String code) { + // 处理code为null的情况 + if (code == null) { + return UN_KNOW.getName(); + } + // 遍历所有枚举常量,匹配code + for (CsTransientEnum transientEnum : CsTransientEnum.values()) { + if (transientEnum.getCode().equals(code)) { + return transientEnum.getName(); + } + } + // 未找到匹配的code时,返回未知名称 + return UN_KNOW.getName(); + } } diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ExcelRptTempMapper.xml b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ExcelRptTempMapper.xml index 7f742e5..ddae4e1 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ExcelRptTempMapper.xml +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/ExcelRptTempMapper.xml @@ -52,10 +52,6 @@ LEFT JOIN sys_dept_temp b ON a.Id = b.temp_id WHERE a.activation = 1 - and b.dept_id in - - #{item} - order by a.sort asc 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 72fcdba..deecf24 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 @@ -20,6 +20,7 @@ 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.enums.CsTransientEnum; import com.njcn.csharmonic.mapper.CsEventPOMapper; import com.njcn.csharmonic.param.CldEventParam; import com.njcn.csharmonic.param.CsEventUserQueryPage; @@ -67,7 +68,10 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.io.InputStream; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.net.URLEncoder; +import java.text.DecimalFormat; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; @@ -179,7 +183,7 @@ public class CsEventPOServiceImpl extends ServiceImpl EVENT_TAGS = Arrays.asList( EVT_SYS_DIPSTR.getCode(), - EVT_SYS_INTRSTRr.getCode(), + EVT_SYS_INTRSTR.getCode(), EVT_SYS_SWLSTR.getCode() ); @@ -197,13 +201,46 @@ public class CsEventPOServiceImpl extends ServiceImpl 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(),"/"))); + dataGroupEventVOList.forEach(item->{ + item.setLineName(linePOMap.getOrDefault(item.getLineId(),"/")); + if(CsTransientEnum.EVT_SYS_SWLSTR.getCode().equals(item.getTag())){ + item.setSeverity("/"); + }else { + item.setSeverity(getYzd(item.getPersistTime()*1000,item.getAmplitude()/100.0)); + } + item.setTag(CsTransientEnum.getNameByCode(item.getTag())); + item.setPersistTime(BigDecimal.valueOf(item.getPersistTime()).setScale(3, RoundingMode.HALF_UP).doubleValue()); + }); result.setRecords(dataGroupEventVOList); result.setTotal(page.getTotal()); } return result; } + /** + * 获取该事件的严重度 + * + * @param persistTime 持续时间 ms单位 + * @param eventValue 暂降、暂升幅值 + */ + public String getYzd(Double persistTime, Double eventValue) { + Double yzd; + // 格式化小数 + DecimalFormat df = new DecimalFormat("0.000"); + if (persistTime <= 20) { + yzd = 1.0 - eventValue; + } else if (persistTime > 20 && persistTime <= 200) { + yzd = 2.0 * (1 - eventValue); + } else if (persistTime > 200 && persistTime <= 500) { + yzd = 3.3 * (1 - eventValue); + } else if (persistTime > 500 && persistTime <= 10000) { + yzd = 5.0 * (1 - eventValue); + } else { + yzd = 10.0 * (1 - eventValue); + } + return df.format(yzd); + } + @Override @Transactional public void saveBatchEventList(List csEventPOS) { diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java index 380ba24..daf6b82 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CustomReportServiceImpl.java @@ -12,6 +12,7 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONTokener; +import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.toolkit.SqlRunner; import com.njcn.common.pojo.enums.common.DataStateEnum; @@ -112,6 +113,7 @@ public class CustomReportServiceImpl implements CustomReportService { private final String STR_TWO = "$"; private final String STR_THREE = "&"; private final String STR_FOUR = "%"; + private final String limitTable = "pq_overlimit"; @Override public void getCustomReport(ReportSearchParam reportSearchParam, HttpServletResponse response) { @@ -191,9 +193,10 @@ public class CustomReportServiceImpl implements CustomReportService { } @Override + @DS("sjzx") public List getTemplateByDept(String id) { - List deptIds = deptFeignClient.getDepSonIdtByDeptId(id).getData(); - return excelRptTempMapper.getReportTemplateByDept(deptIds); + //List deptIds = deptFeignClient.getDepSonIdtByDeptId(id).getData(); + return excelRptTempMapper.getReportTemplateByDept(new ArrayList<>()); } @Override @@ -246,15 +249,23 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public List reportChooseTree() { - DictData dic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.CS_DATA_TYPE.getName(), DicDataEnum.EPD.getName()).getData(); - - List list = epdFeignClient.dictMarkByDataType(dic.getId()).getData(); - list.sort(Comparator.comparingInt(EleEpdPqd::getSort)); - Map> map = list.stream().collect(Collectors.groupingBy(EleEpdPqd::getName, LinkedHashMap::new, Collectors.toList())); - List tree = new ArrayList<>(); - map.forEach((key, value) -> { + DictData dic = dicDataFeignClient.getDicDataByNameAndTypeName(DicDataTypeEnum.CS_DATA_TYPE.getName(), DicDataEnum.PQD.getName()).getData(); + List epdList = epdFeignClient.dictMarkByDataType(dic.getId()).getData(); + epdList = epdList.stream().filter(it->StrUtil.isNotBlank(it.getResourcesId())).collect(Collectors.toList()); + if(CollUtil.isEmpty(epdList)){ + return tree; + } + List dayTableList = dicDataFeignClient.getDicDataByTypeCode(DicDataTypeEnum.DATA_DAY.getCode()).getData(); + Map dayTableMap = dayTableList.stream().collect(Collectors.toMap(DictData::getId, DictData::getName)); + + epdList.forEach(item->item.setResourcesId(dayTableMap.get(item.getResourcesId()))); + epdList.sort(Comparator.comparingInt(EleEpdPqd::getSort)); + + Map> map = epdList.stream().collect(Collectors.groupingBy(EleEpdPqd::getName, LinkedHashMap::new, Collectors.toList())); + + map.forEach((key, value) -> { ReportTreeVO reportTreeVO = new ReportTreeVO(); reportTreeVO.setName(value.get(0).getOtherName()); reportTreeVO.setShowName(value.get(0).getShowName()); @@ -282,10 +293,12 @@ public class CustomReportServiceImpl implements CustomReportService { @Override public List targetLimitChooseTree() { List result = new ArrayList<>(); - DictData dic = dicDataFeignClient.getDicDataByCode(DicDataEnum.EPD.getCode()).getData(); + DictData dic = dicDataFeignClient.getDicDataByCode(DicDataEnum.PQD.getCode()).getData(); + + List list = epdFeignClient.dictMarkByDataType(dic.getId()).getData() - .stream().filter(eleEpdPqd -> eleEpdPqd.getLimitTable().equals("pq_overlimit")).collect(Collectors.toList()); - list.sort(Comparator.comparingInt(EleEpdPqd::getSort)); + .stream().filter(eleEpdPqd -> limitTable.equals(eleEpdPqd.getLimitTable())) + .sorted(Comparator.comparingInt(EleEpdPqd::getSort)).collect(Collectors.toList()); Map> map = list.stream().collect(Collectors.groupingBy(EleEpdPqd::getLimitName)); map.forEach((key, val) -> { ReportTreeVO reportTreeVO = new ReportTreeVO(); @@ -364,7 +377,7 @@ public class CustomReportServiceImpl implements CustomReportService { private void assStatMethod(EleEpdPqd item, List statTree, String oneKey, String twoKey) { - //存在向别为M但是Stat_Method不为空 + //存在相别为M但是Stat_Method不为空 if (StrUtil.isNotBlank(item.getStatMethod())) { String[] arr = item.getStatMethod().split(","); List stat = Stream.of(arr).collect(Collectors.toList()); 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 08df9b4..a1b8ab9 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 @@ -44,7 +44,7 @@ import static com.njcn.csharmonic.enums.CsTransientEnum.*; public class EventOverviewServiceImpl implements EventOverviewService { private static final List EVENT_TAGS = Arrays.asList( EVT_SYS_DIPSTR.getCode(), - EVT_SYS_INTRSTRr.getCode(), + EVT_SYS_INTRSTR.getCode(), EVT_SYS_SWLSTR.getCode() ); @@ -75,7 +75,7 @@ public class EventOverviewServiceImpl implements EventOverviewService { } Map eventCountByTag = csEventPOList.stream().collect(Collectors.groupingBy(CsEventPO::getTag, Collectors.counting())); result.setEventDown(eventCountByTag.getOrDefault(EVT_SYS_DIPSTR.getCode(), 0L).intValue()); - result.setEventOff(eventCountByTag.getOrDefault(EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); + result.setEventOff(eventCountByTag.getOrDefault(EVT_SYS_INTRSTR.getCode(), 0L).intValue()); result.setEventUp(eventCountByTag.getOrDefault(EVT_SYS_SWLSTR.getCode(), 0L).intValue()); result.setAllNum(csEventPOList.size()); return result; @@ -115,6 +115,7 @@ public class EventOverviewServiceImpl implements EventOverviewService { .map(line -> { EventStatisticVO vo = new EventStatisticVO(); vo.setName(line.getName()); + vo.setId(line.getLineId()); return vo; }) .collect(Collectors.toList()); @@ -134,10 +135,10 @@ public class EventOverviewServiceImpl implements EventOverviewService { .map(line -> { EventStatisticVO vo = new EventStatisticVO(); vo.setName(line.getName()); - + vo.setId(line.getLineId()); Map lineEvents = eventCountByLineAndTag.getOrDefault(line.getLineId(), Collections.emptyMap()); vo.setEventDown(lineEvents.getOrDefault(EVT_SYS_DIPSTR.getCode(), 0L).intValue()); - vo.setEventOff(lineEvents.getOrDefault(EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); + vo.setEventOff(lineEvents.getOrDefault(EVT_SYS_INTRSTR.getCode(), 0L).intValue()); vo.setEventUp(lineEvents.getOrDefault(EVT_SYS_SWLSTR.getCode(), 0L).intValue()); return vo; @@ -216,7 +217,7 @@ public class EventOverviewServiceImpl implements EventOverviewService { Map itemMap = map.getOrDefault(day,Collections.emptyMap()); eventStatisticVO.setEventDown(itemMap.getOrDefault(EVT_SYS_DIPSTR.getCode(), 0L).intValue()); - eventStatisticVO.setEventOff(itemMap.getOrDefault(EVT_SYS_INTRSTRr.getCode(), 0L).intValue()); + eventStatisticVO.setEventOff(itemMap.getOrDefault(EVT_SYS_INTRSTR.getCode(), 0L).intValue()); eventStatisticVO.setEventUp(itemMap.getOrDefault(EVT_SYS_SWLSTR.getCode(), 0L).intValue()); return eventStatisticVO; }).collect(Collectors.toList()); @@ -316,7 +317,7 @@ public class EventOverviewServiceImpl implements EventOverviewService { 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)) { + } else if (EVT_SYS_INTRSTR.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); @@ -328,7 +329,7 @@ public class EventOverviewServiceImpl implements EventOverviewService { List trendList = Arrays.asList( new EventCoordsVO.TagObj(EVT_SYS_DIPSTR.getCode(), timeSegmentStats[0]), - new EventCoordsVO.TagObj(EVT_SYS_INTRSTRr.getCode(), + new EventCoordsVO.TagObj(EVT_SYS_INTRSTR.getCode(), timeSegmentStats[1]), new EventCoordsVO.TagObj(EVT_SYS_SWLSTR.getCode(), timeSegmentStats[2])