|  | @@ -2,8 +2,12 @@ package com.xunmei.iot.service.impl;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  import cn.hutool.core.util.ObjectUtil;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.constant.SecurityConstants;
 | 
	
		
			
				|  |  | +import com.xunmei.common.core.domain.iot.domain.IotSensor;
 | 
	
		
			
				|  |  | +import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
 | 
	
		
			
				|  |  |  import com.xunmei.common.core.thread.ThreadPoolConfig;
 | 
	
		
			
				|  |  |  import com.xunmei.iot.mapper.IotBoardMapper;
 | 
	
		
			
				|  |  | +import com.xunmei.iot.service.IIotCommonSensorService;
 | 
	
		
			
				|  |  | +import com.xunmei.iot.service.IotAlarmDataService;
 | 
	
		
			
				|  |  |  import com.xunmei.iot.service.IotBoardService;
 | 
	
		
			
				|  |  |  import com.xunmei.iot.vo.board.IotBoardOverviewItemVo;
 | 
	
		
			
				|  |  |  import com.xunmei.iot.vo.board.IotBoardOverviewVo;
 | 
	
	
		
			
				|  | @@ -14,10 +18,16 @@ import org.springframework.beans.factory.annotation.Qualifier;
 | 
	
		
			
				|  |  |  import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
 | 
	
		
			
				|  |  |  import org.springframework.stereotype.Service;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import javax.annotation.Resource;
 | 
	
		
			
				|  |  | +import java.util.ArrayList;
 | 
	
		
			
				|  |  | +import java.util.HashMap;
 | 
	
		
			
				|  |  | +import java.util.List;
 | 
	
		
			
				|  |  | +import java.util.Map;
 | 
	
		
			
				|  |  |  import java.util.concurrent.CompletableFuture;
 | 
	
		
			
				|  |  |  import java.util.concurrent.ExecutionException;
 | 
	
		
			
				|  |  |  import java.util.concurrent.TimeUnit;
 | 
	
		
			
				|  |  |  import java.util.concurrent.TimeoutException;
 | 
	
		
			
				|  |  | +import java.util.stream.Collectors;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  @Service
 | 
	
		
			
				|  |  |  public class IotBoardServiceImpl implements IotBoardService {
 | 
	
	
		
			
				|  | @@ -123,4 +133,57 @@ public class IotBoardServiceImpl implements IotBoardService {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |          return vo;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    IIotCommonSensorService sensorService;
 | 
	
		
			
				|  |  | +    @Resource
 | 
	
		
			
				|  |  | +    IotAlarmDataService alarmDataService;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public  Map<String, Object> iotOverview(Long orgId) {
 | 
	
		
			
				|  |  | +        Map<String, Object> dataMap = new HashMap<>();
 | 
	
		
			
				|  |  | +        List<Map<String,Object>> resultList = new ArrayList<>();
 | 
	
		
			
				|  |  | +        SysOrg org = remoteOrgService.selectOrgById(orgId, SecurityConstants.INNER);
 | 
	
		
			
				|  |  | +        List<IotSensor> list= sensorService.selectSensorListByOrgPath(org.getPath());
 | 
	
		
			
				|  |  | +        if (ObjectUtil.isEmpty(list)){
 | 
	
		
			
				|  |  | +            return dataMap;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        //默认为正常
 | 
	
		
			
				|  |  | +        list.forEach(r -> {
 | 
	
		
			
				|  |  | +            if (ObjectUtil.isNull(r.getState())) {
 | 
	
		
			
				|  |  | +                r.setState(0);
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        HashMap<String, Object> map = new HashMap<>();
 | 
	
		
			
				|  |  | +        map.put("key", "传感器设备");
 | 
	
		
			
				|  |  | +        map.put("sensorNums", list.size());
 | 
	
		
			
				|  |  | +        map.put("normal", 0);
 | 
	
		
			
				|  |  | +        map.put("alarm", 0);
 | 
	
		
			
				|  |  | +        dataMap.put("sensor",map);
 | 
	
		
			
				|  |  | +        Map<Integer, Long> collect = list.stream().collect(Collectors.groupingBy(IotSensor::getState, Collectors.counting()));
 | 
	
		
			
				|  |  | +        collect.forEach((k, v) -> {
 | 
	
		
			
				|  |  | +            if (ObjectUtil.equal(0, k)) {
 | 
	
		
			
				|  |  | +                map.put("normal", v.intValue());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            if (ObjectUtil.equal(1, k)) {
 | 
	
		
			
				|  |  | +                map.put("alarm", v.intValue());
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +        });
 | 
	
		
			
				|  |  | +        resultList.add(map);
 | 
	
		
			
				|  |  | +       List<IotAlarmData> alarmDataList= alarmDataService.selectAlarmDataListByOrgPath(org.getPath(),0);
 | 
	
		
			
				|  |  | +        Map<Object, List<IotAlarmData>> dataList = alarmDataList.stream().collect(Collectors.groupingBy(IotAlarmData::getSourceType));
 | 
	
		
			
				|  |  | +        for (Map.Entry<Object, List<IotAlarmData>> listEntry : dataList.entrySet()) {
 | 
	
		
			
				|  |  | +            List<IotAlarmData> value = listEntry.getValue();
 | 
	
		
			
				|  |  | +            Map<String, Object> hashMap = new HashMap<>();
 | 
	
		
			
				|  |  | +            long count = value.stream().filter(d -> ObjectUtil.isNotNull(d.getEndTime())).count();
 | 
	
		
			
				|  |  | +            long unDealAlarm = value.stream().filter(d -> ObjectUtil.isNull(d.getDoTime())).count();
 | 
	
		
			
				|  |  | +            hashMap.put("key",value.get(0).getSourceTypeDes());
 | 
	
		
			
				|  |  | +            hashMap.put("historyAlarm", count);
 | 
	
		
			
				|  |  | +            hashMap.put("currentAlarm", value.size() - count);
 | 
	
		
			
				|  |  | +            hashMap.put("unDealAlarm", unDealAlarm);
 | 
	
		
			
				|  |  | +            resultList.add(hashMap);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        dataMap.put("resultData",resultList);
 | 
	
		
			
				|  |  | +        return dataMap;
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  }
 |