diff --git a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java index 113719e..a973c67 100644 --- a/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java +++ b/dk-modules/business/src/main/java/org/dromara/business/service/impl/BusinessAlertStatisticsServiceImpl.java @@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; import org.dromara.business.domain.bo.BusinessAlertBo; import org.dromara.business.domain.model.StatObj; +import org.dromara.business.feign.FeignDeviceGroup; import org.dromara.business.mapper.BusinessAlertMapper; import org.dromara.business.service.IBusinessAlertStatisticsService; import org.dromara.common.core.exception.ServiceException; @@ -20,6 +21,7 @@ import org.dromara.system.api.domain.vo.RemoteDeptVo; import org.dromara.system.api.domain.vo.RemotePostVo; import org.dromara.system.api.model.LoginUser; import org.dromara.system.api.model.RoleDTO; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.math.BigDecimal; @@ -58,6 +60,10 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist @DubboReference(timeout = 30000) RemoteDataScopeService remoteDataScopeService; + @Autowired + FeignDeviceGroup feignDeviceGroup; + + /** * 按照月份分类预警数量 * @param businessAlertBo @@ -176,7 +182,17 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist //----------------------------------------------获取飞行总架次、总时长---------------------------------------------- //获取飞行总架次、总时长 - Map countMap = RedisUtils.getCacheMap(FLY_COUNT); + //获取机场信息根据当前登录人 + List deviceSnList = ObjectUtil.isNotEmpty(feignDeviceGroup.listDevice(LoginHelper.getUserId()))?feignDeviceGroup.listDevice(LoginHelper.getUserId()):ListUtil.empty(); + + + //过滤redis中用户所拥有的设备 + Map countMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_COUNT)) + .map(map -> map.entrySet().stream() + .filter(entry -> deviceSnList.contains(entry.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) + .orElse(new HashMap<>()); + int flyCount; if (ObjectUtil.isNotEmpty(countMap)){ @@ -193,7 +209,14 @@ public class BusinessAlertStatisticsServiceImpl implements IBusinessAlertStatist flyCount = 0; } - Map accTimeMap = RedisUtils.getCacheMap(FLY_ACC_TIME); + //过滤redis中用户所拥有的设备 + Map accTimeMap = Optional.ofNullable(RedisUtils.getCacheMap(FLY_ACC_TIME)) + .map(map -> map.entrySet().stream() + .filter(entry -> deviceSnList.contains(entry.getKey())) + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue))) + .orElse(new HashMap<>()); + + double flyAccTime; if (ObjectUtil.isNotEmpty(accTimeMap)) {