| | |
| | | areaIdSet.addAll(parseIdList(record.getAreaDivideIds())); |
| | | } |
| | | |
| | | // 汇总场景关联的区域与设备,便于统计设备数量 |
| | | Map<Long, BigDecimal> areaSizeMap = new HashMap<>(); |
| | | Map<Long, List<Long>> areaDeviceMap = new HashMap<>(); |
| | | Set<Long> deviceIdSet = new HashSet<>(); |
| | |
| | | |
| | | Map<Long, String> deviceTypeMap = new HashMap<>(); |
| | | if (!deviceIdSet.isEmpty()) { |
| | | // 批量拉取设备类型,降低循环查询成本 |
| | | List<FwDeviceEntity> deviceList = fwDeviceService.listByIds(deviceIdSet); |
| | | for (FwDeviceEntity device : deviceList) { |
| | | if (device == null || device.getId() == null) { |
| | |
| | | for (FwDefenseSceneVO record : records) { |
| | | List<Long> areaIds = parseIdList(record.getAreaDivideIds()); |
| | | record.setAreaCount(areaIds.size()); |
| | | record.setDefenseArea(sumDefenseArea(areaIds, areaSizeMap)); |
| | | |
| | | Set<Long> deviceIds = new HashSet<>(); |
| | | for (Long areaId : areaIds) { |
| | |
| | | } |
| | | return idList; |
| | | } |
| | | |
| | | private Integer sumDefenseArea(List<Long> areaIds, Map<Long, BigDecimal> areaSizeMap) { |
| | | if (areaIds == null || areaIds.isEmpty()) { |
| | | return 0; |
| | | } |
| | | // 面积按平方米整数返回 |
| | | BigDecimal total = BigDecimal.ZERO; |
| | | for (Long areaId : areaIds) { |
| | | BigDecimal areaSize = areaSizeMap.get(areaId); |
| | | if (areaSize != null) { |
| | | total = total.add(areaSize); |
| | | } |
| | | } |
| | | if (BigDecimal.ZERO.compareTo(total) == 0) { |
| | | return 0; |
| | | } |
| | | BigDecimal totalArea = total.multiply(AREA_SIZE_FACTOR); |
| | | return totalArea.setScale(0, RoundingMode.HALF_UP).intValue(); |
| | | } |
| | | |
| | | |
| | | @Override |
| | | public List<FwDefenseSceneExcel> exportFwDefenseScene(Wrapper<FwDefenseSceneEntity> queryWrapper) { |