diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java index 87f7302..b46867a 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java @@ -19,6 +19,7 @@ import java.util.Optional; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -96,7 +97,7 @@ } @Override - public List selectWarnMonthListTotal(String projectCode) { + public List selectWarnMonthListTotal(@Param("projectCode") String projectCode) { return monitoringWarnRecordMapper.selectWarnMonthListTotal(projectCode); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java index 87f7302..b46867a 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java @@ -19,6 +19,7 @@ import java.util.Optional; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -96,7 +97,7 @@ } @Override - public List selectWarnMonthListTotal(String projectCode) { + public List selectWarnMonthListTotal(@Param("projectCode") String projectCode) { return monitoringWarnRecordMapper.selectWarnMonthListTotal(projectCode); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java index 7ec7c27..1c145e7 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java @@ -1,6 +1,7 @@ package com.newfiber.termite.service.impl; import com.newfiber.common.core.exception.InnerAuthException; +import com.newfiber.common.core.utils.DateUtils; import com.newfiber.termite.domain.*; import com.newfiber.termite.domain.request.WarnMonitoringRequest; import com.newfiber.termite.domain.request.WarnMonthAlarmsRequest; @@ -23,6 +24,7 @@ import com.newfiber.termite.service.IProjectInfoService; import com.newfiber.termite.service.IStatisticsService; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.Map.Entry; @@ -54,8 +56,8 @@ private IMonitoringWarnRecordService monitoringWarnRecordService; - @Resource - private IStatisticsService statisticsService; +// @Resource +// private IStatisticsService statisticsService; @Override @@ -138,13 +140,12 @@ // 设备信息 DeviceInfoQueryRequest deviceInfoQueryRequest = new DeviceInfoQueryRequest(); deviceInfoQueryRequest.setProjectCodeList(projectCodeList); - List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); + List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); // TODO 历史告警 MonitoringWarnRecordQueryRequest monitoringWarnRecordQueryRequest = new MonitoringWarnRecordQueryRequest(); monitoringWarnRecordQueryRequest.setProjectCodeList(projectCodeList); List monitoringWarnRecordList = monitoringWarnRecordService.selectListTotal(monitoringWarnRecordQueryRequest); - // List monitoringWarnRecordList = monitoringWarnRecordService.selectList(monitoringWarnRecordQueryRequest); // 实时监测数据 @@ -154,6 +155,7 @@ long warnDeviceCount = 0L; int warnProjectCount = 0; + long totalSnCount =0; for(ProjectInfo projectInfo : projectInfoSet){ List projectDeviceInfoList = deviceInfoList.stream().filter(t -> @@ -172,15 +174,22 @@ projectStatisticDetail.setWarnCountRealtime(warnCountRealtime); for (MonitoringWarnResponseStatistics monitoringWarnResponseStatistics : monitoringWarnRecordList) { - if(monitoringWarnResponseStatistics.getProjectCode() == projectInfo.getProjectCode()){ - projectStatisticDetail.setWarnCountHistory(monitoringWarnResponseStatistics.getSnCount()); + if(monitoringWarnResponseStatistics.getProjectCode().equals(projectInfo.getProjectCode())){ + totalSnCount += monitoringWarnResponseStatistics.getSnCount(); + projectStatisticDetail.setWarnCountHistory(totalSnCount); } + } + // Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); + //firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - // projectStatisticDetail.setWarnCountHistory(projectMonitoringWarnRecordList.stream().map(MonitoringWarnRecord::getSn).distinct().count()); - Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); - firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - + Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream() + .map(DeviceInfo::getFirstWarnDatetime) + .filter(Objects::nonNull) + .max(Comparator.naturalOrder()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String formattedFirstWarnDatetime = firstWarnDatetimeDevice.isPresent() ? sdf.format(firstWarnDatetimeDevice.get()) : ""; + projectStatisticDetail.setFirstWarnDatetime(formattedFirstWarnDatetime); projectStatisticDetailList.add(projectStatisticDetail); if(warnCountRealtime > 0) warnProjectCount = warnProjectCount + 1; @@ -240,52 +249,52 @@ WarnMonitoringRequest warnMonitoringRequest = new WarnMonitoringRequest(); warnMonitoringRequest.setProjectCode(request.getProjectCode()); - List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); - //累计站点个数 - long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); - //告警超过15天的站点 - long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); - - warnMonitoringResponse.setWarnmoitoringExceedDay(count1); - warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); - warnMonitoringResponse.setProjectCode(request.getProjectCode()); - warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); - - - //累计告警天数统计,并计算百分比 - Map durationToSnCount = new HashMap<>(); - listWarinTotalDays.stream() - .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, - Collectors.mapping(WarnMonitoringResponseInfo::getCount, - Collectors.toList()))) - .forEach((sn, days) -> { - days.stream() - .forEach(day -> { - String key; - if (day <= 1) { - key = "无告警"; - } else if (day >=2 && day <= 3) { - key = "2-3天"; - } else if (day >=4 && day <= 6) { - key = "4-6天"; - } else if (day >=7 && day <= 15) { - key = "7-15天"; - } else { - key = ">15天"; - } - durationToSnCount.merge(key, 1L, Long::sum); - }); - }); - - List warnMonitoringResponseDaysInfoList = new ArrayList(); - - // 计算百分比并添加到结果列表中 - durationToSnCount.forEach((durationRange, count) -> { - double percentage = (double) count / uniqueSnCount * 100; - warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); - - }); - warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); +// List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); +// //累计站点个数 +// long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// //告警超过15天的站点 +// long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// +// warnMonitoringResponse.setWarnmoitoringExceedDay(count1); +// warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); +// warnMonitoringResponse.setProjectCode(request.getProjectCode()); +// warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); +// +// +// //累计告警天数统计,并计算百分比 +// Map durationToSnCount = new HashMap<>(); +// listWarinTotalDays.stream() +// .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, +// Collectors.mapping(WarnMonitoringResponseInfo::getCount, +// Collectors.toList()))) +// .forEach((sn, days) -> { +// days.stream() +// .forEach(day -> { +// String key; +// if (day <= 1) { +// key = "无告警"; +// } else if (day >=2 && day <= 3) { +// key = "2-3天"; +// } else if (day >=4 && day <= 6) { +// key = "4-6天"; +// } else if (day >=7 && day <= 15) { +// key = "7-15天"; +// } else { +// key = ">15天"; +// } +// durationToSnCount.merge(key, 1L, Long::sum); +// }); +// }); +// +// List warnMonitoringResponseDaysInfoList = new ArrayList(); +// +// // 计算百分比并添加到结果列表中 +// durationToSnCount.forEach((durationRange, count) -> { +// double percentage = (double) count / uniqueSnCount * 100; +// warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); +// +// }); +// warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); return new WarnMonitoringResponse(); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java index 87f7302..b46867a 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java @@ -19,6 +19,7 @@ import java.util.Optional; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -96,7 +97,7 @@ } @Override - public List selectWarnMonthListTotal(String projectCode) { + public List selectWarnMonthListTotal(@Param("projectCode") String projectCode) { return monitoringWarnRecordMapper.selectWarnMonthListTotal(projectCode); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java index 7ec7c27..1c145e7 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java @@ -1,6 +1,7 @@ package com.newfiber.termite.service.impl; import com.newfiber.common.core.exception.InnerAuthException; +import com.newfiber.common.core.utils.DateUtils; import com.newfiber.termite.domain.*; import com.newfiber.termite.domain.request.WarnMonitoringRequest; import com.newfiber.termite.domain.request.WarnMonthAlarmsRequest; @@ -23,6 +24,7 @@ import com.newfiber.termite.service.IProjectInfoService; import com.newfiber.termite.service.IStatisticsService; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.Map.Entry; @@ -54,8 +56,8 @@ private IMonitoringWarnRecordService monitoringWarnRecordService; - @Resource - private IStatisticsService statisticsService; +// @Resource +// private IStatisticsService statisticsService; @Override @@ -138,13 +140,12 @@ // 设备信息 DeviceInfoQueryRequest deviceInfoQueryRequest = new DeviceInfoQueryRequest(); deviceInfoQueryRequest.setProjectCodeList(projectCodeList); - List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); + List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); // TODO 历史告警 MonitoringWarnRecordQueryRequest monitoringWarnRecordQueryRequest = new MonitoringWarnRecordQueryRequest(); monitoringWarnRecordQueryRequest.setProjectCodeList(projectCodeList); List monitoringWarnRecordList = monitoringWarnRecordService.selectListTotal(monitoringWarnRecordQueryRequest); - // List monitoringWarnRecordList = monitoringWarnRecordService.selectList(monitoringWarnRecordQueryRequest); // 实时监测数据 @@ -154,6 +155,7 @@ long warnDeviceCount = 0L; int warnProjectCount = 0; + long totalSnCount =0; for(ProjectInfo projectInfo : projectInfoSet){ List projectDeviceInfoList = deviceInfoList.stream().filter(t -> @@ -172,15 +174,22 @@ projectStatisticDetail.setWarnCountRealtime(warnCountRealtime); for (MonitoringWarnResponseStatistics monitoringWarnResponseStatistics : monitoringWarnRecordList) { - if(monitoringWarnResponseStatistics.getProjectCode() == projectInfo.getProjectCode()){ - projectStatisticDetail.setWarnCountHistory(monitoringWarnResponseStatistics.getSnCount()); + if(monitoringWarnResponseStatistics.getProjectCode().equals(projectInfo.getProjectCode())){ + totalSnCount += monitoringWarnResponseStatistics.getSnCount(); + projectStatisticDetail.setWarnCountHistory(totalSnCount); } + } + // Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); + //firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - // projectStatisticDetail.setWarnCountHistory(projectMonitoringWarnRecordList.stream().map(MonitoringWarnRecord::getSn).distinct().count()); - Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); - firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - + Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream() + .map(DeviceInfo::getFirstWarnDatetime) + .filter(Objects::nonNull) + .max(Comparator.naturalOrder()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String formattedFirstWarnDatetime = firstWarnDatetimeDevice.isPresent() ? sdf.format(firstWarnDatetimeDevice.get()) : ""; + projectStatisticDetail.setFirstWarnDatetime(formattedFirstWarnDatetime); projectStatisticDetailList.add(projectStatisticDetail); if(warnCountRealtime > 0) warnProjectCount = warnProjectCount + 1; @@ -240,52 +249,52 @@ WarnMonitoringRequest warnMonitoringRequest = new WarnMonitoringRequest(); warnMonitoringRequest.setProjectCode(request.getProjectCode()); - List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); - //累计站点个数 - long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); - //告警超过15天的站点 - long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); - - warnMonitoringResponse.setWarnmoitoringExceedDay(count1); - warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); - warnMonitoringResponse.setProjectCode(request.getProjectCode()); - warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); - - - //累计告警天数统计,并计算百分比 - Map durationToSnCount = new HashMap<>(); - listWarinTotalDays.stream() - .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, - Collectors.mapping(WarnMonitoringResponseInfo::getCount, - Collectors.toList()))) - .forEach((sn, days) -> { - days.stream() - .forEach(day -> { - String key; - if (day <= 1) { - key = "无告警"; - } else if (day >=2 && day <= 3) { - key = "2-3天"; - } else if (day >=4 && day <= 6) { - key = "4-6天"; - } else if (day >=7 && day <= 15) { - key = "7-15天"; - } else { - key = ">15天"; - } - durationToSnCount.merge(key, 1L, Long::sum); - }); - }); - - List warnMonitoringResponseDaysInfoList = new ArrayList(); - - // 计算百分比并添加到结果列表中 - durationToSnCount.forEach((durationRange, count) -> { - double percentage = (double) count / uniqueSnCount * 100; - warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); - - }); - warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); +// List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); +// //累计站点个数 +// long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// //告警超过15天的站点 +// long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// +// warnMonitoringResponse.setWarnmoitoringExceedDay(count1); +// warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); +// warnMonitoringResponse.setProjectCode(request.getProjectCode()); +// warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); +// +// +// //累计告警天数统计,并计算百分比 +// Map durationToSnCount = new HashMap<>(); +// listWarinTotalDays.stream() +// .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, +// Collectors.mapping(WarnMonitoringResponseInfo::getCount, +// Collectors.toList()))) +// .forEach((sn, days) -> { +// days.stream() +// .forEach(day -> { +// String key; +// if (day <= 1) { +// key = "无告警"; +// } else if (day >=2 && day <= 3) { +// key = "2-3天"; +// } else if (day >=4 && day <= 6) { +// key = "4-6天"; +// } else if (day >=7 && day <= 15) { +// key = "7-15天"; +// } else { +// key = ">15天"; +// } +// durationToSnCount.merge(key, 1L, Long::sum); +// }); +// }); +// +// List warnMonitoringResponseDaysInfoList = new ArrayList(); +// +// // 计算百分比并添加到结果列表中 +// durationToSnCount.forEach((durationRange, count) -> { +// double percentage = (double) count / uniqueSnCount * 100; +// warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); +// +// }); +// warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); return new WarnMonitoringResponse(); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml index 2d6f8f3..cd7e1a2 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml @@ -78,9 +78,9 @@ and t.first_warn_datetime is not null - + and tpi.project_code in - + #{projectCode} diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java index 87f7302..b46867a 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java @@ -19,6 +19,7 @@ import java.util.Optional; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -96,7 +97,7 @@ } @Override - public List selectWarnMonthListTotal(String projectCode) { + public List selectWarnMonthListTotal(@Param("projectCode") String projectCode) { return monitoringWarnRecordMapper.selectWarnMonthListTotal(projectCode); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java index 7ec7c27..1c145e7 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java @@ -1,6 +1,7 @@ package com.newfiber.termite.service.impl; import com.newfiber.common.core.exception.InnerAuthException; +import com.newfiber.common.core.utils.DateUtils; import com.newfiber.termite.domain.*; import com.newfiber.termite.domain.request.WarnMonitoringRequest; import com.newfiber.termite.domain.request.WarnMonthAlarmsRequest; @@ -23,6 +24,7 @@ import com.newfiber.termite.service.IProjectInfoService; import com.newfiber.termite.service.IStatisticsService; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.Map.Entry; @@ -54,8 +56,8 @@ private IMonitoringWarnRecordService monitoringWarnRecordService; - @Resource - private IStatisticsService statisticsService; +// @Resource +// private IStatisticsService statisticsService; @Override @@ -138,13 +140,12 @@ // 设备信息 DeviceInfoQueryRequest deviceInfoQueryRequest = new DeviceInfoQueryRequest(); deviceInfoQueryRequest.setProjectCodeList(projectCodeList); - List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); + List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); // TODO 历史告警 MonitoringWarnRecordQueryRequest monitoringWarnRecordQueryRequest = new MonitoringWarnRecordQueryRequest(); monitoringWarnRecordQueryRequest.setProjectCodeList(projectCodeList); List monitoringWarnRecordList = monitoringWarnRecordService.selectListTotal(monitoringWarnRecordQueryRequest); - // List monitoringWarnRecordList = monitoringWarnRecordService.selectList(monitoringWarnRecordQueryRequest); // 实时监测数据 @@ -154,6 +155,7 @@ long warnDeviceCount = 0L; int warnProjectCount = 0; + long totalSnCount =0; for(ProjectInfo projectInfo : projectInfoSet){ List projectDeviceInfoList = deviceInfoList.stream().filter(t -> @@ -172,15 +174,22 @@ projectStatisticDetail.setWarnCountRealtime(warnCountRealtime); for (MonitoringWarnResponseStatistics monitoringWarnResponseStatistics : monitoringWarnRecordList) { - if(monitoringWarnResponseStatistics.getProjectCode() == projectInfo.getProjectCode()){ - projectStatisticDetail.setWarnCountHistory(monitoringWarnResponseStatistics.getSnCount()); + if(monitoringWarnResponseStatistics.getProjectCode().equals(projectInfo.getProjectCode())){ + totalSnCount += monitoringWarnResponseStatistics.getSnCount(); + projectStatisticDetail.setWarnCountHistory(totalSnCount); } + } + // Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); + //firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - // projectStatisticDetail.setWarnCountHistory(projectMonitoringWarnRecordList.stream().map(MonitoringWarnRecord::getSn).distinct().count()); - Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); - firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - + Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream() + .map(DeviceInfo::getFirstWarnDatetime) + .filter(Objects::nonNull) + .max(Comparator.naturalOrder()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String formattedFirstWarnDatetime = firstWarnDatetimeDevice.isPresent() ? sdf.format(firstWarnDatetimeDevice.get()) : ""; + projectStatisticDetail.setFirstWarnDatetime(formattedFirstWarnDatetime); projectStatisticDetailList.add(projectStatisticDetail); if(warnCountRealtime > 0) warnProjectCount = warnProjectCount + 1; @@ -240,52 +249,52 @@ WarnMonitoringRequest warnMonitoringRequest = new WarnMonitoringRequest(); warnMonitoringRequest.setProjectCode(request.getProjectCode()); - List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); - //累计站点个数 - long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); - //告警超过15天的站点 - long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); - - warnMonitoringResponse.setWarnmoitoringExceedDay(count1); - warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); - warnMonitoringResponse.setProjectCode(request.getProjectCode()); - warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); - - - //累计告警天数统计,并计算百分比 - Map durationToSnCount = new HashMap<>(); - listWarinTotalDays.stream() - .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, - Collectors.mapping(WarnMonitoringResponseInfo::getCount, - Collectors.toList()))) - .forEach((sn, days) -> { - days.stream() - .forEach(day -> { - String key; - if (day <= 1) { - key = "无告警"; - } else if (day >=2 && day <= 3) { - key = "2-3天"; - } else if (day >=4 && day <= 6) { - key = "4-6天"; - } else if (day >=7 && day <= 15) { - key = "7-15天"; - } else { - key = ">15天"; - } - durationToSnCount.merge(key, 1L, Long::sum); - }); - }); - - List warnMonitoringResponseDaysInfoList = new ArrayList(); - - // 计算百分比并添加到结果列表中 - durationToSnCount.forEach((durationRange, count) -> { - double percentage = (double) count / uniqueSnCount * 100; - warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); - - }); - warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); +// List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); +// //累计站点个数 +// long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// //告警超过15天的站点 +// long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// +// warnMonitoringResponse.setWarnmoitoringExceedDay(count1); +// warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); +// warnMonitoringResponse.setProjectCode(request.getProjectCode()); +// warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); +// +// +// //累计告警天数统计,并计算百分比 +// Map durationToSnCount = new HashMap<>(); +// listWarinTotalDays.stream() +// .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, +// Collectors.mapping(WarnMonitoringResponseInfo::getCount, +// Collectors.toList()))) +// .forEach((sn, days) -> { +// days.stream() +// .forEach(day -> { +// String key; +// if (day <= 1) { +// key = "无告警"; +// } else if (day >=2 && day <= 3) { +// key = "2-3天"; +// } else if (day >=4 && day <= 6) { +// key = "4-6天"; +// } else if (day >=7 && day <= 15) { +// key = "7-15天"; +// } else { +// key = ">15天"; +// } +// durationToSnCount.merge(key, 1L, Long::sum); +// }); +// }); +// +// List warnMonitoringResponseDaysInfoList = new ArrayList(); +// +// // 计算百分比并添加到结果列表中 +// durationToSnCount.forEach((durationRange, count) -> { +// double percentage = (double) count / uniqueSnCount * 100; +// warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); +// +// }); +// warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); return new WarnMonitoringResponse(); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml index 2d6f8f3..cd7e1a2 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml @@ -78,9 +78,9 @@ and t.first_warn_datetime is not null - + and tpi.project_code in - + #{projectCode} diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml index 310574d..5d10ea9 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml @@ -89,7 +89,7 @@ SELECT di.sn, di.first_warn_datetime, - COUNT(DISTINCT DATE(dm.date)) AS cumulative_days + COUNT(DISTINCT DATE(dm.date)) AS count FROM ter_device_info di INNER JOIN diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java index 87f7302..b46867a 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java @@ -19,6 +19,7 @@ import java.util.Optional; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -96,7 +97,7 @@ } @Override - public List selectWarnMonthListTotal(String projectCode) { + public List selectWarnMonthListTotal(@Param("projectCode") String projectCode) { return monitoringWarnRecordMapper.selectWarnMonthListTotal(projectCode); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java index 7ec7c27..1c145e7 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java @@ -1,6 +1,7 @@ package com.newfiber.termite.service.impl; import com.newfiber.common.core.exception.InnerAuthException; +import com.newfiber.common.core.utils.DateUtils; import com.newfiber.termite.domain.*; import com.newfiber.termite.domain.request.WarnMonitoringRequest; import com.newfiber.termite.domain.request.WarnMonthAlarmsRequest; @@ -23,6 +24,7 @@ import com.newfiber.termite.service.IProjectInfoService; import com.newfiber.termite.service.IStatisticsService; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.Map.Entry; @@ -54,8 +56,8 @@ private IMonitoringWarnRecordService monitoringWarnRecordService; - @Resource - private IStatisticsService statisticsService; +// @Resource +// private IStatisticsService statisticsService; @Override @@ -138,13 +140,12 @@ // 设备信息 DeviceInfoQueryRequest deviceInfoQueryRequest = new DeviceInfoQueryRequest(); deviceInfoQueryRequest.setProjectCodeList(projectCodeList); - List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); + List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); // TODO 历史告警 MonitoringWarnRecordQueryRequest monitoringWarnRecordQueryRequest = new MonitoringWarnRecordQueryRequest(); monitoringWarnRecordQueryRequest.setProjectCodeList(projectCodeList); List monitoringWarnRecordList = monitoringWarnRecordService.selectListTotal(monitoringWarnRecordQueryRequest); - // List monitoringWarnRecordList = monitoringWarnRecordService.selectList(monitoringWarnRecordQueryRequest); // 实时监测数据 @@ -154,6 +155,7 @@ long warnDeviceCount = 0L; int warnProjectCount = 0; + long totalSnCount =0; for(ProjectInfo projectInfo : projectInfoSet){ List projectDeviceInfoList = deviceInfoList.stream().filter(t -> @@ -172,15 +174,22 @@ projectStatisticDetail.setWarnCountRealtime(warnCountRealtime); for (MonitoringWarnResponseStatistics monitoringWarnResponseStatistics : monitoringWarnRecordList) { - if(monitoringWarnResponseStatistics.getProjectCode() == projectInfo.getProjectCode()){ - projectStatisticDetail.setWarnCountHistory(monitoringWarnResponseStatistics.getSnCount()); + if(monitoringWarnResponseStatistics.getProjectCode().equals(projectInfo.getProjectCode())){ + totalSnCount += monitoringWarnResponseStatistics.getSnCount(); + projectStatisticDetail.setWarnCountHistory(totalSnCount); } + } + // Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); + //firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - // projectStatisticDetail.setWarnCountHistory(projectMonitoringWarnRecordList.stream().map(MonitoringWarnRecord::getSn).distinct().count()); - Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); - firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - + Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream() + .map(DeviceInfo::getFirstWarnDatetime) + .filter(Objects::nonNull) + .max(Comparator.naturalOrder()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String formattedFirstWarnDatetime = firstWarnDatetimeDevice.isPresent() ? sdf.format(firstWarnDatetimeDevice.get()) : ""; + projectStatisticDetail.setFirstWarnDatetime(formattedFirstWarnDatetime); projectStatisticDetailList.add(projectStatisticDetail); if(warnCountRealtime > 0) warnProjectCount = warnProjectCount + 1; @@ -240,52 +249,52 @@ WarnMonitoringRequest warnMonitoringRequest = new WarnMonitoringRequest(); warnMonitoringRequest.setProjectCode(request.getProjectCode()); - List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); - //累计站点个数 - long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); - //告警超过15天的站点 - long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); - - warnMonitoringResponse.setWarnmoitoringExceedDay(count1); - warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); - warnMonitoringResponse.setProjectCode(request.getProjectCode()); - warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); - - - //累计告警天数统计,并计算百分比 - Map durationToSnCount = new HashMap<>(); - listWarinTotalDays.stream() - .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, - Collectors.mapping(WarnMonitoringResponseInfo::getCount, - Collectors.toList()))) - .forEach((sn, days) -> { - days.stream() - .forEach(day -> { - String key; - if (day <= 1) { - key = "无告警"; - } else if (day >=2 && day <= 3) { - key = "2-3天"; - } else if (day >=4 && day <= 6) { - key = "4-6天"; - } else if (day >=7 && day <= 15) { - key = "7-15天"; - } else { - key = ">15天"; - } - durationToSnCount.merge(key, 1L, Long::sum); - }); - }); - - List warnMonitoringResponseDaysInfoList = new ArrayList(); - - // 计算百分比并添加到结果列表中 - durationToSnCount.forEach((durationRange, count) -> { - double percentage = (double) count / uniqueSnCount * 100; - warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); - - }); - warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); +// List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); +// //累计站点个数 +// long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// //告警超过15天的站点 +// long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// +// warnMonitoringResponse.setWarnmoitoringExceedDay(count1); +// warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); +// warnMonitoringResponse.setProjectCode(request.getProjectCode()); +// warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); +// +// +// //累计告警天数统计,并计算百分比 +// Map durationToSnCount = new HashMap<>(); +// listWarinTotalDays.stream() +// .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, +// Collectors.mapping(WarnMonitoringResponseInfo::getCount, +// Collectors.toList()))) +// .forEach((sn, days) -> { +// days.stream() +// .forEach(day -> { +// String key; +// if (day <= 1) { +// key = "无告警"; +// } else if (day >=2 && day <= 3) { +// key = "2-3天"; +// } else if (day >=4 && day <= 6) { +// key = "4-6天"; +// } else if (day >=7 && day <= 15) { +// key = "7-15天"; +// } else { +// key = ">15天"; +// } +// durationToSnCount.merge(key, 1L, Long::sum); +// }); +// }); +// +// List warnMonitoringResponseDaysInfoList = new ArrayList(); +// +// // 计算百分比并添加到结果列表中 +// durationToSnCount.forEach((durationRange, count) -> { +// double percentage = (double) count / uniqueSnCount * 100; +// warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); +// +// }); +// warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); return new WarnMonitoringResponse(); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml index 2d6f8f3..cd7e1a2 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml @@ -78,9 +78,9 @@ and t.first_warn_datetime is not null - + and tpi.project_code in - + #{projectCode} diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml index 310574d..5d10ea9 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml @@ -89,7 +89,7 @@ SELECT di.sn, di.first_warn_datetime, - COUNT(DISTINCT DATE(dm.date)) AS cumulative_days + COUNT(DISTINCT DATE(dm.date)) AS count FROM ter_device_info di INNER JOIN diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml index c93fb88..b5781d4 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml @@ -53,9 +53,9 @@ and t.yesnoant = #{request.yesnoant} - + and tpi.project_code in - + #{projectCode} diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java index 1b1e8e9..e247617 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/controller/StatisticsController.java @@ -46,12 +46,6 @@ - - - @Resource - private IDeviceInfoService deviceInfoService; - - /** * */ diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java index ffce1f9..53b0cb5 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/domain/response/statistic/ProjectStatisticDetail.java @@ -29,7 +29,7 @@ * 首次报警时间(连续3次手动确认则报警) */ @ApiModelProperty(value = "首次报警时间(连续3次手动确认则报警)") - private Date firstWarnDatetime; + private String firstWarnDatetime; @ApiModelProperty(value = "设备总数") private Integer deviceCount; diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java index 87f7302..b46867a 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/MonitoringWarnRecordServiceImpl.java @@ -19,6 +19,7 @@ import java.util.Optional; import javax.annotation.Resource; import org.springframework.beans.BeanUtils; +import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -96,7 +97,7 @@ } @Override - public List selectWarnMonthListTotal(String projectCode) { + public List selectWarnMonthListTotal(@Param("projectCode") String projectCode) { return monitoringWarnRecordMapper.selectWarnMonthListTotal(projectCode); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java index 7ec7c27..1c145e7 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java +++ b/newfiber-termites/newfiber-termites-dataup/src/main/java/com/newfiber/termite/service/impl/StatisticsServiceImpl.java @@ -1,6 +1,7 @@ package com.newfiber.termite.service.impl; import com.newfiber.common.core.exception.InnerAuthException; +import com.newfiber.common.core.utils.DateUtils; import com.newfiber.termite.domain.*; import com.newfiber.termite.domain.request.WarnMonitoringRequest; import com.newfiber.termite.domain.request.WarnMonthAlarmsRequest; @@ -23,6 +24,7 @@ import com.newfiber.termite.service.IProjectInfoService; import com.newfiber.termite.service.IStatisticsService; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.util.*; import java.util.Map.Entry; @@ -54,8 +56,8 @@ private IMonitoringWarnRecordService monitoringWarnRecordService; - @Resource - private IStatisticsService statisticsService; +// @Resource +// private IStatisticsService statisticsService; @Override @@ -138,13 +140,12 @@ // 设备信息 DeviceInfoQueryRequest deviceInfoQueryRequest = new DeviceInfoQueryRequest(); deviceInfoQueryRequest.setProjectCodeList(projectCodeList); - List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); + List deviceInfoList = deviceInfoService.selectList(deviceInfoQueryRequest); // TODO 历史告警 MonitoringWarnRecordQueryRequest monitoringWarnRecordQueryRequest = new MonitoringWarnRecordQueryRequest(); monitoringWarnRecordQueryRequest.setProjectCodeList(projectCodeList); List monitoringWarnRecordList = monitoringWarnRecordService.selectListTotal(monitoringWarnRecordQueryRequest); - // List monitoringWarnRecordList = monitoringWarnRecordService.selectList(monitoringWarnRecordQueryRequest); // 实时监测数据 @@ -154,6 +155,7 @@ long warnDeviceCount = 0L; int warnProjectCount = 0; + long totalSnCount =0; for(ProjectInfo projectInfo : projectInfoSet){ List projectDeviceInfoList = deviceInfoList.stream().filter(t -> @@ -172,15 +174,22 @@ projectStatisticDetail.setWarnCountRealtime(warnCountRealtime); for (MonitoringWarnResponseStatistics monitoringWarnResponseStatistics : monitoringWarnRecordList) { - if(monitoringWarnResponseStatistics.getProjectCode() == projectInfo.getProjectCode()){ - projectStatisticDetail.setWarnCountHistory(monitoringWarnResponseStatistics.getSnCount()); + if(monitoringWarnResponseStatistics.getProjectCode().equals(projectInfo.getProjectCode())){ + totalSnCount += monitoringWarnResponseStatistics.getSnCount(); + projectStatisticDetail.setWarnCountHistory(totalSnCount); } + } + // Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); + //firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - // projectStatisticDetail.setWarnCountHistory(projectMonitoringWarnRecordList.stream().map(MonitoringWarnRecord::getSn).distinct().count()); - Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream().max(Comparator.comparing(DeviceInfo::getFirstWarnDatetime)); - firstWarnDatetimeDevice.ifPresent(deviceInfo -> projectStatisticDetail.setFirstWarnDatetime(deviceInfo.getFirstWarnDatetime())); - + Optional firstWarnDatetimeDevice = projectDeviceInfoList.stream() + .map(DeviceInfo::getFirstWarnDatetime) + .filter(Objects::nonNull) + .max(Comparator.naturalOrder()); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + String formattedFirstWarnDatetime = firstWarnDatetimeDevice.isPresent() ? sdf.format(firstWarnDatetimeDevice.get()) : ""; + projectStatisticDetail.setFirstWarnDatetime(formattedFirstWarnDatetime); projectStatisticDetailList.add(projectStatisticDetail); if(warnCountRealtime > 0) warnProjectCount = warnProjectCount + 1; @@ -240,52 +249,52 @@ WarnMonitoringRequest warnMonitoringRequest = new WarnMonitoringRequest(); warnMonitoringRequest.setProjectCode(request.getProjectCode()); - List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); - //累计站点个数 - long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); - //告警超过15天的站点 - long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); - - warnMonitoringResponse.setWarnmoitoringExceedDay(count1); - warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); - warnMonitoringResponse.setProjectCode(request.getProjectCode()); - warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); - - - //累计告警天数统计,并计算百分比 - Map durationToSnCount = new HashMap<>(); - listWarinTotalDays.stream() - .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, - Collectors.mapping(WarnMonitoringResponseInfo::getCount, - Collectors.toList()))) - .forEach((sn, days) -> { - days.stream() - .forEach(day -> { - String key; - if (day <= 1) { - key = "无告警"; - } else if (day >=2 && day <= 3) { - key = "2-3天"; - } else if (day >=4 && day <= 6) { - key = "4-6天"; - } else if (day >=7 && day <= 15) { - key = "7-15天"; - } else { - key = ">15天"; - } - durationToSnCount.merge(key, 1L, Long::sum); - }); - }); - - List warnMonitoringResponseDaysInfoList = new ArrayList(); - - // 计算百分比并添加到结果列表中 - durationToSnCount.forEach((durationRange, count) -> { - double percentage = (double) count / uniqueSnCount * 100; - warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); - - }); - warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); +// List listWarinTotalDays=statisticsService.listWarinTotalDays(warnMonitoringRequest); +// //累计站点个数 +// long uniqueSnCount = listWarinTotalDays.stream().map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// //告警超过15天的站点 +// long count1 = listWarinTotalDays.stream().filter(info -> info.getCount() > 15).map(WarnMonitoringResponseInfo::getSn).distinct().count(); +// +// warnMonitoringResponse.setWarnmoitoringExceedDay(count1); +// warnMonitoringResponse.setWarnmoitoringCountDay(uniqueSnCount); +// warnMonitoringResponse.setProjectCode(request.getProjectCode()); +// warnMonitoringResponse.setWarnmoitoringListInfo(listWarinTotalDays); +// +// +// //累计告警天数统计,并计算百分比 +// Map durationToSnCount = new HashMap<>(); +// listWarinTotalDays.stream() +// .collect(Collectors.groupingBy(WarnMonitoringResponseInfo::getSn, +// Collectors.mapping(WarnMonitoringResponseInfo::getCount, +// Collectors.toList()))) +// .forEach((sn, days) -> { +// days.stream() +// .forEach(day -> { +// String key; +// if (day <= 1) { +// key = "无告警"; +// } else if (day >=2 && day <= 3) { +// key = "2-3天"; +// } else if (day >=4 && day <= 6) { +// key = "4-6天"; +// } else if (day >=7 && day <= 15) { +// key = "7-15天"; +// } else { +// key = ">15天"; +// } +// durationToSnCount.merge(key, 1L, Long::sum); +// }); +// }); +// +// List warnMonitoringResponseDaysInfoList = new ArrayList(); +// +// // 计算百分比并添加到结果列表中 +// durationToSnCount.forEach((durationRange, count) -> { +// double percentage = (double) count / uniqueSnCount * 100; +// warnMonitoringResponseDaysInfoList.add(new WarnMonitoringResponseDaysInfo(durationRange,percentage)); +// +// }); +// warnMonitoringResponse.setWarnmoitoringDaysListInfo(warnMonitoringResponseDaysInfoList); return new WarnMonitoringResponse(); } diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml index 2d6f8f3..cd7e1a2 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceInfoMapper.xml @@ -78,9 +78,9 @@ and t.first_warn_datetime is not null - + and tpi.project_code in - + #{projectCode} diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml index 310574d..5d10ea9 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataMapper.xml @@ -89,7 +89,7 @@ SELECT di.sn, di.first_warn_datetime, - COUNT(DISTINCT DATE(dm.date)) AS cumulative_days + COUNT(DISTINCT DATE(dm.date)) AS count FROM ter_device_info di INNER JOIN diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml index c93fb88..b5781d4 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/DeviceMonitoringDataRealtimeMapper.xml @@ -53,9 +53,9 @@ and t.yesnoant = #{request.yesnoant} - + and tpi.project_code in - + #{projectCode} diff --git a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/MonitoringWarnRecordMapper.xml b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/MonitoringWarnRecordMapper.xml index 294f166..0307f17 100644 --- a/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/MonitoringWarnRecordMapper.xml +++ b/newfiber-termites/newfiber-termites-dataup/src/main/resources/mapper/termite/MonitoringWarnRecordMapper.xml @@ -71,9 +71,9 @@ and t.status = #{request.status} - + and tpi.project_code in - + #{projectCode} @@ -95,8 +95,8 @@ - + select tpi.project_code AS projectCode, COUNT(*) AS snCount from ter_monitoring_warn_record t where t.del_flag = 0