diff --git a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsLineDTO.java b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsLineDTO.java index 257f2c1..676d11e 100644 --- a/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsLineDTO.java +++ b/cs-device/cs-device-api/src/main/java/com/njcn/csdevice/pojo/dto/CsLineDTO.java @@ -19,7 +19,12 @@ public class CsLineDTO implements Serializable { private String deviceId; /** - * 装置id + * 装置名称 + */ + private String deviceName; + + /** + * 装置类型 */ private String deviceType; diff --git a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml index 8473e50..ef8b1d6 100644 --- a/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml +++ b/cs-device/cs-device-boot/src/main/java/com/njcn/csdevice/mapper/mapping/CsLinePOMapper.xml @@ -57,7 +57,8 @@ + + + + \ No newline at end of file diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml index 677b692..e96183b 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/mapper/mapping/CsEventUserPOMapper.xml @@ -224,7 +224,12 @@ AND b.severity < #{csEventUserQueryPage.severityMax} - AND d.name like concat('%',#{csEventUserQueryPage.searchValue},'%') + + AND e.name like concat('%',#{csEventUserQueryPage.searchValue},'%') + + + AND d.name like concat('%',#{csEventUserQueryPage.searchValue},'%') + 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 99d933d..462fe3c 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 @@ -1,14 +1,13 @@ package com.njcn.csharmonic.service; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.njcn.csdevice.pojo.vo.DataGroupEventVO; import com.njcn.csharmonic.param.*; 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.CsWarnDescVO; -import com.njcn.csharmonic.pojo.vo.EventDetailVO; +import com.njcn.csharmonic.pojo.vo.*; import com.njcn.event.file.pojo.dto.WaveDataDTO; import javax.servlet.http.HttpServletResponse; @@ -70,4 +69,8 @@ public interface CsEventPOService extends IService{ List getEvents(List idList); List getDevAlarmList(CsEventUserQueryParam param); + + IPage getFrontDebugLogs(EventStatisticParam param); + + CsEventReasonAndTypeVo eventReasonAndTypeStatistics(EventStatisticParam param); } 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 3c46cb1..b964a63 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 @@ -9,8 +9,10 @@ import cn.hutool.core.date.DateUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.ZipUtil; +import com.alibaba.csp.sentinel.util.StringUtil; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.njcn.advance.api.EventCauseFeignClient; @@ -19,6 +21,7 @@ import com.njcn.common.pojo.exception.BusinessException; import com.njcn.csdevice.api.CsLedgerFeignClient; import com.njcn.csdevice.api.CsLineFeignClient; import com.njcn.csdevice.enums.AlgorithmResponseEnum; +import com.njcn.csdevice.pojo.dto.CsLineDTO; import com.njcn.csdevice.pojo.dto.DevDetailDTO; import com.njcn.csdevice.pojo.po.CsLinePO; import com.njcn.csdevice.pojo.vo.DataGroupEventVO; @@ -28,9 +31,7 @@ import com.njcn.csharmonic.mapper.CsEventPOMapper; import com.njcn.csharmonic.param.*; 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.CsWarnDescVO; -import com.njcn.csharmonic.pojo.vo.EventDetailVO; +import com.njcn.csharmonic.pojo.vo.*; import com.njcn.csharmonic.service.CsEventPOService; import com.njcn.csharmonic.service.CsEventUserPOService; import com.njcn.csharmonic.utils.DataChangeUtil; @@ -89,6 +90,7 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -124,6 +126,7 @@ public class CsEventPOServiceImpl extends ServiceImpl getFrontDebugLogs(EventStatisticParam param) { + IPage result = new Page<>(param.getPageNum(), param.getPageSize()); + List voRecords = new ArrayList<>(); + IPage page = new Page<>(param.getPageNum(), param.getPageSize()); + //获取所有监测点信息 + List lineList = csLineFeignClient.getAllLineDetail().getData(); + if (CollectionUtil.isEmpty(lineList)) { + return result; + } + Map> devMap = lineList.stream().collect(Collectors.groupingBy(CsLineDTO::getDeviceId)); + Map lineMap = lineList.stream().collect(Collectors.toMap(CsLineDTO::getLineId, Function.identity())); + + List lineIds = new ArrayList<>(); + List devIds = new ArrayList<>(); + + //根据关键字筛选(用户可能输入监测点名称或设备名称) + if (StringUtil.isNotBlank(param.getSearchValue())) { + String keyword = param.getSearchValue(); + lineIds = lineList.stream() + .filter(item -> item.getName().contains(keyword)) + .map(CsLineDTO::getLineId) + .distinct() + .collect(Collectors.toList()); + devIds = lineList.stream() + .filter(item -> item.getDeviceName().contains(keyword)) + .map(CsLineDTO::getDeviceId) + .distinct() + .collect(Collectors.toList()); + //关键字筛选后没有任何匹配,返回空页 + if (CollectionUtil.isEmpty(lineIds) && CollectionUtil.isEmpty(devIds)) { + return result; + } + } + + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + //时间范围和类型是通用条件 + queryWrapper + .between(CsEventPO::getStartTime, + DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(), + DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString()) + .in(CsEventPO::getLevel, Arrays.asList(4, 5, 6, 7)) + .eq(CsEventPO::getType, 3) + .orderByDesc(CsEventPO::getStartTime); + + //关键字筛选:监测点名称 OR 设备名称 + if (StringUtil.isNotBlank(param.getSearchValue())) { + List finalLineIds = lineIds; + List finalDevIds = devIds; + queryWrapper.and(i -> { + if (CollUtil.isNotEmpty(finalLineIds)) { + i.in(CsEventPO::getLineId, finalLineIds); + } + if (CollUtil.isNotEmpty(finalDevIds)) { + i.or().in(CsEventPO::getDeviceId, finalDevIds); + } + }); + } + + //告警等级筛选 + if (StringUtil.isNotBlank(param.getLevel())) { + List levelList = Arrays.stream(param.getLevel().split(",")) + .map(String::trim) + .filter(s -> !s.isEmpty()) + .map(Integer::parseInt) + .collect(Collectors.toList()); + if (CollUtil.isNotEmpty(levelList)) { + queryWrapper.in(CsEventPO::getLevel, levelList); + } + } + page = csEventPOMapper.selectPage(page, queryWrapper); + List records = page.getRecords(); + if (CollUtil.isNotEmpty(records)) { + records.forEach(item->{ + CsEventLogsVo vo = new CsEventLogsVo(); + BeanUtils.copyProperties(item,vo); + if (!Objects.isNull(item.getLineId())) { + vo.setLineName(lineMap.get(item.getLineId()).getName()); + } + if (!Objects.isNull(item.getDeviceId())) { + vo.setDeviceName(devMap.get(item.getDeviceId()).get(0).getName()); + } + vo.setEvent(item.getTag()); + voRecords.add(vo); + }); + } + result.setRecords(voRecords); + result.setTotal(page.getTotal()); + result.setSize(page.getSize()); + result.setCurrent(page.getCurrent()); + result.setPages(page.getPages()); + return result; + } + + @Override + public CsEventReasonAndTypeVo eventReasonAndTypeStatistics(EventStatisticParam param) { + CsEventReasonAndTypeVo vo = new CsEventReasonAndTypeVo(); + String begin = DateUtil.beginOfDay(DateUtil.parse(param.getSearchBeginTime())).toString(); + String end = DateUtil.endOfDay(DateUtil.parse(param.getSearchEndTime())).toString(); + DictData data1 = dicDataFeignClient.getDicDataByCode(DicDataEnum.RESON_REST.getCode()).getData(); + DictData data2 = dicDataFeignClient.getDicDataByCode(DicDataEnum.TYPE_REST.getCode()).getData(); + vo.setEventReason(csEventPOMapper.getReasonStatistics(begin, end, data1.getId())); + vo.setEventType(csEventPOMapper.getTypeStatistics(begin, end, data2.getId())); + return vo; + } + /** * 获取该事件的严重度 * diff --git a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventUserPOServiceImpl.java b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventUserPOServiceImpl.java index acdaa2d..1ef19c3 100644 --- a/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventUserPOServiceImpl.java +++ b/cs-harmonic/cs-harmonic-boot/src/main/java/com/njcn/csharmonic/service/impl/CsEventUserPOServiceImpl.java @@ -539,9 +539,10 @@ public class CsEventUserPOServiceImpl extends ServiceImpl getFrontWarnInfo(CldWarnParam baseParam) { Page page = new Page<>(baseParam.getPageNum(), baseParam.getPageSize()); List nodeList = nodeFeignClient.nodeAllList().getData(); - Map nodeMap = nodeList.stream().collect(Collectors.toMap(Node::getId, Function.identity())); + Map nodeMap = new HashMap<>(); if (CollectionUtil.isNotEmpty(nodeList)) { + nodeMap = nodeList.stream().collect(Collectors.toMap(Node::getId, Function.identity())); if (ObjectUtil.isNotNull(baseParam.getSearchValue()) || StringUtil.isNotBlank(baseParam.getSearchValue())) { nodeList = nodeList.stream().filter(item-> item.getName().contains(baseParam.getSearchValue()) || item.getIp().contains(baseParam.getSearchValue())).collect(Collectors.toList()); } @@ -567,10 +568,20 @@ public class CsEventUserPOServiceImpl extends ServiceImpl records = page.getRecords(); if (CollUtil.isNotEmpty(records)) { + Map finalNodeMap = nodeMap; page.getRecords().forEach(item->{ //这边将前置名称放进lineId字段;将前置IP放进wavePath字段;进程号使用clDid - item.setLineId(nodeMap.get(item.getDeviceId()).getName()); - item.setWavePath(nodeMap.get(item.getDeviceId()).getIp()); + Node node = finalNodeMap.get(item.getDeviceId()); + item.setLineId(Objects.isNull(node) ? null : node.getName()); + item.setWavePath(Objects.isNull(node) ? null : node.getIp()); + //事件等级(1:Ⅰ级||ERROR 2:Ⅱ级||WARN 3:Ⅲ级||(DEBUG&&NORMAL)) + if (item.getLevel() == 4 || item.getLevel() == 5) { + item.setLevel(3); + } else if (item.getLevel() == 6) { + item.setLevel(2); + } else if (item.getLevel() == 7) { + item.setLevel(1); + } }); } return page; diff --git a/cs-system/cs-system-boot/src/main/java/com/njcn/cssystem/service/impl/CsLogsPOServiceImpl.java b/cs-system/cs-system-boot/src/main/java/com/njcn/cssystem/service/impl/CsLogsPOServiceImpl.java index f8d9adc..0f2a543 100644 --- a/cs-system/cs-system-boot/src/main/java/com/njcn/cssystem/service/impl/CsLogsPOServiceImpl.java +++ b/cs-system/cs-system-boot/src/main/java/com/njcn/cssystem/service/impl/CsLogsPOServiceImpl.java @@ -1,6 +1,6 @@ package com.njcn.cssystem.service.impl; -import com.alibaba.fastjson.JSONArray; +import cn.hutool.core.date.LocalDateTimeUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -10,13 +10,10 @@ import com.njcn.cssystem.mapper.CsLogsPOMapper; import com.njcn.cssystem.pojo.po.CsLogsPO; import com.njcn.cssystem.service.CsLogsPOService; import com.njcn.web.pojo.param.BaseParam; -import com.njcn.web.utils.RequestUtil; import org.apache.commons.lang.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; -import java.util.List; - /** * * Description: @@ -32,6 +29,7 @@ public class CsLogsPOServiceImpl extends ServiceImpl i public void addLog(DeviceLogDTO deviceLogDTO) { CsLogsPO csPO = new CsLogsPO(); BeanUtils.copyProperties(deviceLogDTO,csPO); + csPO.setUserName(deviceLogDTO.getUserIndex()); csPO.setCreateBy(deviceLogDTO.getUserIndex()); csPO.setUpdateBy(deviceLogDTO.getUserIndex()); this.save(csPO); @@ -39,14 +37,19 @@ public class CsLogsPOServiceImpl extends ServiceImpl i @Override public IPage queryPage(BaseParam baseParam) { + String beginDay = LocalDateTimeUtil.format( + LocalDateTimeUtil.beginOfDay(LocalDateTimeUtil.parse(baseParam.getSearchBeginTime(), "yyyy-MM-dd")), + "yyyy-MM-dd HH:mm:ss" + ); + String endDay = LocalDateTimeUtil.format( + LocalDateTimeUtil.endOfDay(LocalDateTimeUtil.parse(baseParam.getSearchEndTime(), "yyyy-MM-dd")), + "yyyy-MM-dd HH:mm:ss" + ); Page returnpage = new Page<> (baseParam.getPageNum ( ), baseParam.getPageSize ( )); - String username = RequestUtil.getUsername(); - String userRole = RequestUtil.getUserRole(); - List strings = JSONArray.parseArray(userRole, String.class); QueryWrapper csLogsPOQueryWrapper = new QueryWrapper<>(); csLogsPOQueryWrapper.lambda() - .ge(StringUtils.isNotBlank(baseParam.getSearchBeginTime()),CsLogsPO::getCreateTime,baseParam.getSearchBeginTime()). - le(StringUtils.isNotBlank(baseParam.getSearchEndTime()),CsLogsPO::getCreateTime,baseParam.getSearchEndTime()).orderByDesc(CsLogsPO::getCreateTime); + .ge(StringUtils.isNotBlank(beginDay),CsLogsPO::getCreateTime,beginDay). + le(StringUtils.isNotBlank(beginDay),CsLogsPO::getCreateTime,endDay).orderByDesc(CsLogsPO::getCreateTime); IPage list = this.getBaseMapper().selectPage(returnpage,csLogsPOQueryWrapper); return list; }