|
|
@@ -9,11 +9,10 @@ import com.google.common.collect.Lists;
|
|
|
import com.xunmei.common.core.constant.CacheConstants;
|
|
|
import com.xunmei.common.core.constant.SecurityConstants;
|
|
|
import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
|
|
|
-import com.xunmei.common.core.domain.iot.domain.IotSensor;
|
|
|
import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
|
|
|
import com.xunmei.common.core.domain.video.MediatorVideoDaysCheck;
|
|
|
import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
|
|
|
-import com.xunmei.common.core.enums.CategoryDataEnum;
|
|
|
+import com.xunmei.common.core.enums.iot.BaseDeviceTypeEnum;
|
|
|
import com.xunmei.common.core.enums.iot.SensorType;
|
|
|
import com.xunmei.common.core.exception.ServiceException;
|
|
|
import com.xunmei.common.core.thread.ThreadPoolConfig;
|
|
|
@@ -30,6 +29,7 @@ import com.xunmei.iot.vo.board.IotBoardOverviewItemVo;
|
|
|
import com.xunmei.iot.vo.board.IotBoardOverviewVo;
|
|
|
import com.xunmei.iot.vo.board.IotBoardTotalData;
|
|
|
import com.xunmei.iot.vo.deviceInfo.DeviceDetailInfoVo;
|
|
|
+import com.xunmei.iot.vo.overview.DeviceSummary;
|
|
|
import com.xunmei.system.api.RemoteOrgService;
|
|
|
import com.xunmei.system.api.domain.SysOrg;
|
|
|
import com.xunmei.system.api.domain.SysRole;
|
|
|
@@ -226,8 +226,8 @@ public class IotBoardServiceImpl implements IotBoardService {
|
|
|
//查询当前登录用户需要通知的告警类型
|
|
|
LoginUser loginUser = SecurityUtils.getLoginUser();
|
|
|
List<Long> roleIds = null;
|
|
|
- List<SysRole> sysRoles= loginUser.getSysUser().getRoles();
|
|
|
- if (sysRoles != null && !sysRoles.isEmpty()){
|
|
|
+ List<SysRole> sysRoles = loginUser.getSysUser().getRoles();
|
|
|
+ if (sysRoles != null && !sysRoles.isEmpty()) {
|
|
|
roleIds = sysRoles.stream().map(SysRole::getId).collect(Collectors.toList());
|
|
|
}
|
|
|
List<String> productTypes = coreNoticeRuleItemService.getNoticeProductTypesByUser(roleIds, orgId, loginUser.getUserid());
|
|
|
@@ -337,19 +337,19 @@ public class IotBoardServiceImpl implements IotBoardService {
|
|
|
IotBoardTotalData totalData = new IotBoardTotalData();
|
|
|
//构建设备一览表数据
|
|
|
IotBoardTotalData.DeviceOverview deviceOverview = new IotBoardTotalData.DeviceOverview();
|
|
|
- List<Map<String, String>> deviceNums = iotBoardMapper.countDeviceNums(orgPath);
|
|
|
- List<Map<String, String>> deviceNums2 = iotBoardMapper.countDeviceNums2(orgPath);
|
|
|
- for (Map<String, String> map : deviceNums) {
|
|
|
- String aLong = map.get(MAP_VALUE);
|
|
|
- int res = Integer.parseInt(aLong);
|
|
|
- if (CategoryDataEnum.IOT_DETECTION_DEVICE.getId().equals(map.get(CATEGORY_ID))) {
|
|
|
- deviceOverview.setEdgeComputingHosts(res);
|
|
|
+ List<DeviceSummary> deviceNums = iotBoardMapper.countDeviceNums(orgPath);
|
|
|
+ final List<String> sensorCodeList = BaseDeviceTypeEnum.getSensorCodeList();
|
|
|
+ List<Map<String, String>> deviceNums2 = iotBoardMapper.countDeviceNums2(orgPath, sensorCodeList);
|
|
|
+ for (DeviceSummary deviceSummary : deviceNums) {
|
|
|
+ final BaseDeviceTypeEnum typeEnum = BaseDeviceTypeEnum.getEnumByCode(deviceSummary.getDeviceType());
|
|
|
+ if (BaseDeviceTypeEnum.FSU.equals(typeEnum)) {
|
|
|
+ deviceOverview.setEdgeComputingHosts(deviceSummary.getNums());
|
|
|
}
|
|
|
- if (CategoryDataEnum.ALARM_HOST_DEVICE.getId().equals(map.get(CATEGORY_ID))) {
|
|
|
- deviceOverview.setAlarmControllers(res);
|
|
|
+ if (BaseDeviceTypeEnum.AlarmHost.equals(typeEnum)) {
|
|
|
+ deviceOverview.setAlarmControllers(deviceSummary.getNums());
|
|
|
}
|
|
|
- if (CategoryDataEnum.MONITOR_HOST_DEVICE.getId().equals(map.get(CATEGORY_ID))) {
|
|
|
- deviceOverview.setHardDiskRecorders(res);
|
|
|
+ if (BaseDeviceTypeEnum.Dvs.equals(typeEnum)) {
|
|
|
+ deviceOverview.setHardDiskRecorders(deviceSummary.getNums());
|
|
|
}
|
|
|
}
|
|
|
for (Map<String, String> map : deviceNums2) {
|
|
|
@@ -375,29 +375,46 @@ public class IotBoardServiceImpl implements IotBoardService {
|
|
|
IotBoardTotalData.VideoDiagnostic videoDiagnostic = videoDiagnosisService.selectVideoDiagnostic(orgPath, startTime);
|
|
|
totalData.setVideoDiagnostic(videoDiagnostic);
|
|
|
|
|
|
- totalData.setAirConditionerInfo(new IotBoardTotalData.AirConditionerInfo());
|
|
|
- totalData.setUpsInfo(new IotBoardTotalData.UpsInfo());
|
|
|
+ //空调
|
|
|
+ totalData.setAirConditionerInfo(getAirConditionerInfo(orgPath));
|
|
|
+ totalData.setUpsInfo(getUpsInfo(orgPath));
|
|
|
|
|
|
return totalData;
|
|
|
}
|
|
|
|
|
|
+ private IotBoardTotalData.AirConditionerInfo getAirConditionerInfo(String orgPath) {
|
|
|
+ IotBoardTotalData.AirConditionerInfo info = new IotBoardTotalData.AirConditionerInfo();
|
|
|
+ Integer nums = iotBoardMapper.countSensorNumsByType(orgPath, BaseDeviceTypeEnum.FSU_Ups.getCode());
|
|
|
+ info.setTotalDevices(nums);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+ private IotBoardTotalData.UpsInfo getUpsInfo(String orgPath) {
|
|
|
+ IotBoardTotalData.UpsInfo info = new IotBoardTotalData.UpsInfo();
|
|
|
+ Integer nums = iotBoardMapper.countSensorNumsByType(orgPath, BaseDeviceTypeEnum.FSU_AirConditioner.getCode());
|
|
|
+ final Integer alarmCount = alarmDataService.selectUpsAlarmCount(orgPath);
|
|
|
+ info.setTotalDevices(nums);
|
|
|
+ info.setHistoricalAlarmCounts(ObjectUtil.isNull(alarmCount) ? 0 : alarmCount);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
private void sensorData(String MAP_VALUE, String DEVICE_TYPE, String orgPath, IotBoardTotalData totalData) {
|
|
|
//物联设备最近90天的告警数据
|
|
|
List<Map<String, String>> alarmCountMap = alarmDataService.selectAlarmCount(orgPath);
|
|
|
//计算alarmCountMap 所有nums的总和
|
|
|
- int nums = alarmCountMap.stream().filter(m -> ObjectUtil.notEqual(Integer.parseInt(m.get(DEVICE_TYPE)), SensorType.ALARM_SENSOR.getCode())).mapToInt(m -> Integer.parseInt(m.get(MAP_VALUE))).sum();
|
|
|
+ int nums = alarmCountMap.stream().filter(m -> ObjectUtil.notEqual(m.get(DEVICE_TYPE), SensorType.ALARM_SENSOR.getProductName())).mapToInt(m -> Integer.parseInt(m.get(MAP_VALUE))).sum();
|
|
|
totalData.setTotalAlerts(nums);
|
|
|
|
|
|
//传感器数据
|
|
|
- List<Map<String, String>> mapList = iotBoardMapper.countSensorNums(orgPath);
|
|
|
+ List<DeviceSummary> mapList = iotBoardMapper.countSensorNums(orgPath, BaseDeviceTypeEnum.getSensorCodeList());
|
|
|
List<IotBoardTotalData.SensorData> sensorDataList = new ArrayList<>();
|
|
|
for (SensorType sensorType : SensorType.values()) {
|
|
|
- Optional<Map<String, String>> mapOptional = mapList.stream().filter(m -> ObjectUtil.equal(sensorType.getCode().toString(), String.valueOf(m.get(DEVICE_TYPE)))).findAny();
|
|
|
+ final Optional<DeviceSummary> any = mapList.stream().filter(m -> ObjectUtil.equal(sensorType.getProductName(), String.valueOf(m.getDeviceProduct()))).findAny();
|
|
|
int sensorNum = 0;
|
|
|
- if (mapOptional.isPresent()) {
|
|
|
- sensorNum = Integer.parseInt(mapOptional.get().get(MAP_VALUE));
|
|
|
+ if (any.isPresent()) {
|
|
|
+ sensorNum = any.get().getNums();
|
|
|
}
|
|
|
- Optional<Map<String, String>> alarmNumoptional = alarmCountMap.stream().filter(m -> ObjectUtil.equal(sensorType.getCode().toString(), String.valueOf(m.get(DEVICE_TYPE)))).findAny();
|
|
|
+ Optional<Map<String, String>> alarmNumoptional = alarmCountMap.stream().filter(m -> ObjectUtil.equal(sensorType.getProductName(), String.valueOf(m.get(DEVICE_TYPE)))).findAny();
|
|
|
int alarmNum = 0;
|
|
|
if (alarmNumoptional.isPresent()) {
|
|
|
alarmNum = Integer.parseInt(alarmNumoptional.get().get(MAP_VALUE));
|
|
|
@@ -444,8 +461,8 @@ public class IotBoardServiceImpl implements IotBoardService {
|
|
|
videoInspection.setLostRate("-");
|
|
|
} else {
|
|
|
final Optional<MediatorVideoIntegrityCheckLog> optional = videoIntegrityCheckLogs.stream().max(Comparator.comparing(MediatorVideoIntegrityCheckLog::getCreateTime));
|
|
|
- optional.ifPresent(d->videoInspection.setUpdateTime(d.getUpdateTime()));
|
|
|
- // videoInspection.setUpdateTime(videoIntegrityCheckLogs.get(0).getUpdateTime());
|
|
|
+ optional.ifPresent(d -> videoInspection.setUpdateTime(d.getUpdateTime()));
|
|
|
+ // videoInspection.setUpdateTime(videoIntegrityCheckLogs.get(0).getUpdateTime());
|
|
|
}
|
|
|
//获取通道数量
|
|
|
Integer channelNums = dvrChannelMapper.selectChannelCount(org.getPath());
|
|
|
@@ -475,7 +492,7 @@ public class IotBoardServiceImpl implements IotBoardService {
|
|
|
final List<IotDvrDisk> dvrDiskList = iotDvrDiskMapper.selectDiskCount(org.getPath());
|
|
|
if (ObjectUtil.isEmpty(dvrDiskList)) {
|
|
|
videoInspection.setHardDiskExceptionRate("-");
|
|
|
- }else {
|
|
|
+ } else {
|
|
|
final long count1 = dvrDiskList.stream().filter(d -> ObjectUtil.equal(d.getState(), 0)).count();
|
|
|
videoInspection.setHardDiskExceptionRate(String.format("%.2f", ((dvrDiskList.size() - count1) * 100.0 / dvrDiskList.size())) + "%");
|
|
|
}
|